home *** CD-ROM | disk | FTP | other *** search
/ Gigarom 1 / Gigarom Macintosh Archives (Quantum Leap)(CDRM1080320)(1993).iso / FILES / BUS / A-E / AutoAddress Folder.sea / AutoAddress Folder / AutoAddress Files / AAHelp.dbt (.txt) < prev    next >
dBase/FoxBase/XBase/FoxPro Database File  |  1992-09-26  |  415KB  |  3,324 lines

  1. General Topics
  2. This section details several general AutoAddress topics.   
  3. Version 3.01
  4. 9/22/92. Written in FoxBase+/Mac
  5. Copywrite J. Serdakowski, Ph.D., M.B.A., P.E.
  6. Please don't use my program unless you purchase a copy. At $49 for a single user and $99 for a 10 user one site, it really is quite inexpensive.
  7. [FoxBase+/Mac is a trademark of MicroSoft]
  8. tabase other than the one in the current work area, the field name may be prefixed by the alias name, or the work area name, and the 
  9.  operator.
  10. For example:  You're in work area B, and you need to access a field called lastnData Types
  11. The fields that make up the records that make up the files that make up your AutoAddress database management system are all Character types, with the exception of the 'Tag' field, which is a logical type.
  12. Character data type consists of all the characters on the keyboard: letters, numbers, punctuation symbols and special characters (like the plus sign, dollar sign, percentage symbol, etc.).  Character data may consist of all numbers, as in a telephone number or zip code, provided you don't plan to use them for calculations. 
  13. To convert character types to numbers, the VAL() function must be used.
  14. To convert character types to dates, the CTOD() function must be used.
  15. Numeric data consists of numbers, a decimal point and a leading plus or minus sign.  This is the data type you should use for items that will be used in calculations.  Numeric data can vary in length up to a maximum of 16 digits.
  16. Date type data is a special type with a fixed length of 8 positions.  The format that you use for storing date data, however, is flexible.  For instance, you can specify that dates should be in American (mm/dd/yy), British (dd/mm/yy), Italian (dd-mm-yy), French (dd/mm/yy) or ANSI (yy.mm.dd) format.  You can also tell FoxBASE+/Mac to display date data with a 4 digit year format (i.e., mm/dd/yyyy - 12/06/1952).
  17. Logical data is a fixed length type of 1 position.  This type of data indicates a true/false (or yes/no) condition.
  18. fining a database structure, memo fields are defined with a fixed length (10 positions), however, the actual size of memo fields is limited only by available disk space.  Typically, memo fields are used for descriptive text that is likely to exceed the 254 character limit of character type data.
  19. Picture data consists of any graphical items.  Because the size of picture data can vary widely, it is treated in a similar fashion to memo fields.
  20.  condition.
  21. Memo data is a special form of text data.  When defining a database structure, memo fields are defined with a fixed length (10 posi
  22. Expressions
  23. Many FoxBASE+/Mac commands and functions require or permit expressions as part of their formats.  An expression is a combination of variables, constants, functions and operators that can be reduced to a character string, a number, a logical value, or a date.  Most commands and functions require expressions that evaluate to a specific data type.  However, commands like STORE and ? may accept any type of expression.  While date expressions may contain both date and numeric operands, the operands making up any other expressions must be the same data type.  Also, some commands and functions require an expression list, which is one or more expressions separated by commas.
  24. A variable or constant represents a storage place for a specific piece of data.  The contents of variables may change during execution whereas those of constants may not.  A variable may be a database field or a memory variable and must be referenced by its name which consists of up to 10 letters, digits, or underscores beginning with a letter. 
  25. A function may be used in an expression if its result has the appropriate data type.  See Chapter 9 in the manual for information on individual functions.
  26. For and While
  27. The scope for an operation can be determined by the use of a conditional clause in many FoxBASE+/Mac commands.  The FOR <condition> and WHILE <condition> clauses both indicate which records will be affected during a database operation.  The records that will be affected are determined by the logical expression <condition> for each record that is read. 
  28. The WHILE clause causes records to be read only as long as the condition is true.  The first time the condition is false, the database operation ceases.
  29. When the FOR clause is used, all records that meet the condition are affected by the database operation.  Regardless of whether the condition is true or false, the entire database is searched.
  30. FOR and WHILE clauses may appear together in the same FoxBASE+/Mac statement and may also be used in conjunction with other scope indicators (ALL, NEXT, RECORD, or REST).  When FOR and WHILE are both used, the WHILE condition takes precedence.
  31. Menus
  32. MENU  
  33.    Menu creation facility
  34. Format    MENU BAR [<array>[,<expN>]]
  35.         MENU <expN1>,<array>[,<expN2>]
  36.         MENU OFF <expN1>[,<expN2>]
  37.         ON MENU [<commands>]
  38.         MENU(0|1)
  39. The MENU BAR command is used to install the menu bar <array> into the menu bar after the Apple, File and Edit menus.  The items in the <array> must be character type.  By default all <array> elements become menu titles.  <expN> can be specified to limit the number of elements that become menu titles.  For example, if <array> contains 10 elements, to add 3 titles to the menu bar (after Apple, File and Edit) <expN> should have the value 3.  The first 3 elements in the <array> become menu titles. MENU BAR with no arguments will reestablish the FoxBASE+/Mac menu system.
  40. The MENU command installs a menu <array> into a specified position in the menu bar.  <expN1> specifies the position of the menu <array>.  The first menu after the Edit menu is position 1.  The elements in the <array> must be character type.  By default all the elements of <array> are installed as menu items.  To limit the number of elements in <array> to be used as menu items, specify <expN2>. For example, if the value of <expN2> is 4, then the first 4 elements in <array> are used as menu items.
  41. Meta characters may be embedded in the individual <array> elements to control the appearance and bahavior of the menu items. 
  42. The MENU OFF command disables an entire menu or a particular item in the specified menu.  To disable an entire menu, use the form MENU OFF <expN1>. <expN1> indicates the position of the menu to be disabled.  When a menu is disabled, it appears 
  43. grayed
  44. .  To disable an individual item in a menu, use the form <expN1>,<expN2>.  Once again, <expN1> indicates the position of the menu to be disabled.  <expN2> indicates the position of the menu item to be disabled.  
  45. The MENU function with 0 as an argument returns as a numeric value the position of the last menu to receive a menu hit.   With 1 as an argument, it returns as a numeric value the position of the last menu item to receive a menu hit.  These two values together reveal the exact item that received the last menu hit.  Commonly these values are passed as parameters to a menu handling routine.
  46. The ON MENU command defines the action to be taken should a menu hit occur.  When a menu hit occurs the READ or WAIT is terminated and <command> is executed.  Typically <command> is a DO statement with a WITH clause which passes MENU(0) and MENU(1) to a menu handling program.
  47. Operators
  48. The operators available in FoxBASE+/Mac are grouped into four major categories: logical, arithmetic, relational, and string.
  49. LOGICAL Operators (in order of precedence)
  50. ( )        used to group expressions
  51. .NOT., !    logical negative
  52. .AND.    logical AND
  53. .OR.        logical inclusive OR
  54. ARITHMETIC Operators (in order of precedence)
  55. ( )        used to group expressions
  56. **, ^    exponentiation
  57. *, /        multiplication and division
  58. +, -        addition and subtraction
  59. RELATIONAL Operators
  60. <        less than
  61. >        greater than
  62. =        equal to
  63. <>, #    not equal to
  64. <=        less than or equal to
  65. >=        greater than or equal to
  66. $        substring comparison
  67. ==        character string comparison (trailing blanks are significant when EXACT is ON)
  68. STRING Operators
  69. +    string concatenation(straight forward)
  70. -    string concatenation (trailing blanks are moved from the first string to the end of the second string)
  71. Pictures
  72. FoxBASE+/Mac supports a picture data type.  Pictures stored in databases may be either monochrome or full color.  Pictures are placed in databases using the customary cut and paste operations.  They may be either clipped or scaled to a rectangular frame of any size when displayed.  Database pictures may even be used as buttons in input forms.
  73. Scope
  74. In many commands, you will see the phrase 
  75. scope
  76.  in the command definition.  This is used to indicate for which records of the database currently in USE a particular operation is to be performed.
  77. A scope can be defined using one of the following formats:
  78.     indicates that the operation is to take place for all records in the database.
  79.  NEXT <n>
  80.     indicates that the operation is to be carried out for the next <n> records in the database.
  81.  RECORD <n>
  82.     indicates that database record number <n> is to be the subject of the current operation.
  83.  REST
  84.     indicates that the operation is to be carried out for a range of records beginning with the current record and ending with the last record in the file.
  85. User-Defined Functions
  86. A UDF is simply a FoxBASE+/Mac program that contains a set of valid FoxBASE+/Mac statements and RETURNs a value to the calling program.  As with regular programs, the UDF may be included in a procedure file and/or be compiled.  In fact, a UDF may be called as a program with the DO command from some places in an application and called as a function from others.  However, a program that is to be referenced as a User-Defined Function must RETURN a value to the calling program; otherwise, a syntax error will result.
  87. A UDF is referenced by its name (the name of the program or procedure module) followed by parentheses that optionally contain arguments.  If arguments are included in the UDF reference, the first statement in the UDF must be a corresponding PARAMETER statement.  If a UDF has the same name as a built-in function (or its abbreviation), the built-in function takes precedence.
  88. References to UDF's may occur only in:
  89.   STORE statements
  90.   REPLACE statements
  91.   Control statements (IF, WHILE, CASE, etc)
  92.   Print Statements (?, ??)
  93.   Display and List
  94.   @...GET...VALID
  95. edence.
  96. References to UDF's may occur only in:
  97.   STORE statements
  98.   REPLACE statements
  99.   Control statements (IF, WHILE, CASE, etc)
  100.   Print Statements (?, ??)
  101.   Display and List
  102.   @...GET...VALID
  103. WARNING: The statements contained in a User-Defined Function should not alter the state of open database files.  For example, changing filters or relations, switching the currently selected database, or Commands and Functions
  104. This section describes the commands available in AutoAddress. These commands can help advanced users do very elaborate reports.  
  105. ual.  We recommend that you explore the HELP feature thoroughly, as it's a very convenient and quick reference while you're using FoxBASE+/Mac.  If you are not familiar with the FoxBASE+/Mac command language we strongly suggest that you complete the tutorial.
  106. Format:        <expC1> $ <expC2>
  107. This function returns 
  108.  if <expC1> is contained in <expC2>, 
  109.  if it is not.
  110. See also:  AT()
  111. Format:        &<mem_var>[.<expC>]
  112. The function signals that FoxBASE+/Mac is to perform a macro substitution.  It must precede the name of a character memory variable.  The value of <mem_var> replaces the & and the variable name which follows it.  The command is then executed exactly as if it had originally been typed including the characters from the variable.
  113. Normally, the characters inserted by & are followed by one or more blanks.  Use of a . (period) delimiter is used for concatenating additional characters onto a macro expansion.  The character string substituted by the & function may itself contain &s.  If a memory variable exists whose name follows such a nested &, that variable's content is also substituted in the command.  Macros (& functions) can be nested in this manner as desired.
  114. It is not legal to have a variable reference itself recursively in a macro.  For instance, the following will generate an error message:
  115. STORE "&x" TO x? &x
  116. Also, the complete expansion of any macro may not exceed the maximum statement length permitted in FoxBASE+/Mac.  This limit is currently 255 bytes.
  117.    Evaluate expressions, display results
  118. Format:    ? [?] <expr> [, <expr2>, ...]
  119. ? is the 
  120. What do these expressions evaluate to?
  121.  command.  The listed expressions are evaluated, and their values are displayed.
  122. Use just one question mark when you want the results to appear on the next line on the screen or printer at the far left.
  123. Use two consecutive question marks when you want FoxBASE+/Mac to display the results on the current line at the  current output position.
  124. @ ... CLEAR- Clear an area of the screen
  125.  Format: @<row,col> [CLEAR | CLEAR TO <<row,col>>]
  126. This form of the "@" command clears an area of the screen. If you omit the CLEAR  and CLEAR TO options, the line on the row you specify is cleared starting at the column you specify.
  127. If you use the CLEAR option, a rectangular area on the screen is cleared whose upper left corner is <row,col> and whose bottom right corner is the bottom right corner of the screen.
  128. If you use the CLEAR TO option, a rectangular area is cleared as above, except that the second <row,col> pair delimits its bottom right corner.
  129. xxPxPxx
  130. xxPxPxxsg
  131. @... TO ... DOUBLE- Draw a box 
  132.  Format:@ <row1,col1> TO <row2,col2> [DOUBLE]
  133.         [STYLE <expN>] [COLOR <code>]
  134. This form of the "@" command draws a box where <row1,col1> are the coordinates of the upper left corner of the box and <row2,col2> are the coordinates of the lower right corner of the box.
  135. If the row1 and row2 are the same, a horizontal line is drawn.  If the column coordinates are the same, a vertical line is drawn.
  136. If the DOUBLE option is used, the box will be drawn using a double rather than a single line.
  137. The STYLE specification controls the method of placing or displaying objects to an output device.  The output device can be the monitor or a print document.  This single, 32-bit numeric value (known as a word) is divided into five 4-bit values, with the upper twelve bits of the STYLE word reserved for future use.  (Complete information on the effects of the STYLE word can be found at the @SAY/GET command.)
  138. Foreground and background colors can be specified with the COLOR clause, using one of two approaches.  If no COLOR clause is specified then the text is displayed in the current screen color.
  139. COLOR [<standard>][,<enhanced>]
  140. This COLOR clause allows you specify the standard and/or enhanced color settings to be used.  You specify the color settings with letter codes, using a character string expression that must be enclosed in quotation marks.  This is different from the SET COLOR command which does not allow quotation marks around the color codes.
  141. Standard and enhanced display colors are both determined by selecting a pair of the following color codes separated by a slash (/).
  142. For example: COLOR "R/W,G/B" or COLOR ",GB".
  143. COLOR  <expN>,<expN>,<expN>[,<expN>,<expN>,<expN>]
  144. The second variation of the color clause uses three or six numeric expressions to assign pen and fill colors.  The first three numeric expressions represent the red, green and blue (RGB) values to be assigned to the pen color, while the three optional expressions represent the RGB values of the fill color.  The numbers derived from each expression should be in the range of 0 to 65,535, although numbers greater than 65,535 roll-over to 0 (65,536=0, 65,537=1, etc.) and numbers less that zero roll-back to 65,535 (-1=65,535, -2=65,534, etc.).
  145. @WARNING = PROGRAMMER'S TIP:  Program readability will be enhanced if you define PUBLIC memory variables to represent the expressions in the COLOR and FONT clauses.
  146.  and FONT clauses.
  147.  SAY/GET- Perform I/O at specified row and column
  148.  Format: < [PIXELS] row,col>
  149.     [[SAY <expr>]
  150.         [PICTURE <format>]
  151.         [FUNCTION <fcodes>]]
  152.     [[GET <var>]
  153.         [PICTURE <format>]
  154.         [FUNCTION <fcodes>]
  155.         [RANGE [<expN1>] [,<expN2>]]
  156.         [VALID<expL>|<expN>]]
  157.     [SIZE <expN1>,<expN2>]
  158.     [STYLE <expN>]
  159.     [FONT [<expC>][<,expN>]]
  160.     [COLOR <code>]
  161. Use this variation of the @ command to display formatted output on the screen and/or printer or to create input screens.
  162. <row,col>  A pair of numeric expressions representing the position where output will appear.
  163. <format>   A character-valued expression which controls how output will be edited prior to display.
  164. <fcodes>   A character-valued expression containing "function codes" which specify additional editing steps to be applied before output is displayed.
  165. Screen / Printer Coordinates  <[PIXELS] row,col>
  166. For screen I/O, the first row is number 0.  Rows are numbered from top to bottom.  The number of available rows is determined by the FONT and SIZE declaration in the SCREEN command or the size specified in the SET SCREEN command.  For printers, the physical page size determines the number of available rows.  If the PIXEL clause is present, the row coordinate is the number of pixels from the top of the screen or paper and is not affected by the current screen settings. 
  167. Like rows, the first column is column 0.  Columns are numbered from left to right.  The number of available columns is determined by the FONT and SIZE declarations in the SCREEN command or the size specified in the SET SCREEN command.  For printers, the physical page size determines the number of columns.  If the PIXEL clause is used, the column coordinate is the number of pixels from the left edge of the screen or paper and is not affected by the current screen font.
  168. Row and column coordinates in @...SAY output, that's being sent to a print device, can be used to cause an automatic page eject (provided the STYLE clause is not being used).  If the row coordinate is smaller than the previous value, a page eject will be issued before this line of output is sent to the printer.  Likewise, for two consecutive output lines that have the same row value, if the column coordinate of the second output line is not larger than the column coordinate of the first, a page eject will be issued before the line is output.
  169.  SAY Clause
  170. If the SAY clause is present, <expr> is evaluated and displayed starting at <row,col>.  By default, output goes to the screen as normal, "non-intense" text.  If SET DEVICE TO PRINT is issued, output is directed to the printer -- a subsequent SET DEVICE TO SCREEN command must be issued to redirect output from SAYs to the screen.  The @ ...SAY clause may be used in format files.
  171. @SAY ... PICTURE<format>
  172. If the PICTURE clause is present, the value of <expr> is edited according to the specified <format> before it is displayed.  This character string may consist of FUNCTION codes, PICTURE template codes, or a combination of both.
  173. If FUNCTION codes are used, they appear first in <format> preceded by "@".  As many FUNCTION codes as desired may immediately follow the "@" with no embedded spaces.  The last FUNCTION code in the string must be followed by one or more spaces.  These signal the end of the FUNCTION codes and the start of the PICTURE template codes.
  174. FUNCTION and PICTURE codes are listed at the end of this section.
  175. @SAY...FUNCTION  <fcodes>
  176. The FUNCTION clause offers an alternate means of including editing FUNCTION codes in the string used to edit SAY output.  It is not necessary to include the "@" before the FUNCTION codes.  Specifying FUNCTION codes in the FUNCTION clause is equivalent to doing so in the PICTURE clause, but it does make the PICTURE templates appear less cryptic, and therefore easier to maintain.
  177.  GET Clause
  178. If the GET clause is present, a full-screen edit operation is undertaken either starting at <row,col> or at the next screen position following the end of the output generated by the SAY clause.  If INTENSITY is SET OFF, the default setting, the GET fields are displayed with a border.  If INTENSITY is SET ON, the GET fields are displayed in "intense" screen display mode -- normally inverse video.  If both the SAY and GET clauses are present, a space is automatically inserted at the end of the SAY output and before the GET output.  The READ command must be used after the GET to initiate editing of the fields.  The GET clause is ignored if the SET DEVICE TO PRINT command has been issued.
  179. An array memory variable may be specified as the GET <var>, however, the array subscripts are evaluated only when the GET statement is executed.  If array subscript values change after the GET and prior to the READ, the subscripts used for READ will be those in effect at the time the GET command was executed.
  180. @GET...PICTURE  <format>
  181. @GET...FUNCTION  <fcodes>
  182. These clauses have the same purpose here as in the SAY clause, except they are used to edit input data entered in response to a GET.
  183. @GET...RANGE  [<expN1>][,<expN2>]
  184. The RANGE option may be used with date and numeric variables.  It allows the user to specify a range of values within which screen input must lie.  The values specified must be either numeric or date expressions depending on whether <var> contains numeric or date data.
  185. If the value entered is not in the specified range, a message is displayed on the screen that includes the correct range.
  186. Either the upper or lower bound of a RANGE may be omitted (but not both).  If omitted, that portion of the range check is bypassed.
  187. @GET...VALID <expL>|<expN>
  188. The VALID clause is used to validate user input as part of the @...GET command.  A particularly effective approach to input validation is to have a user-defined function as the VALID expression.  During a READ operation, when input for a field with a VALID clause is complete, <expL> or <expN> is evaluated using the value of <var> just input.
  189. @HEADING4 = With A Logical Expression
  190. If <expL> is ".T.", the input is considered to be correct and READ proceeds to the next field to be input.  If <expL> is ".F.", the value is considered to be incorrect, and a message is displayed directing the user to reenter the data after pressing the space bar -- this process continues until <expL> is ".T." or Esc is pressed.
  191.  With A Numeric Expression
  192. If a numeric expression is used rather than a logical expression, different types of action can be taken depending on the value that's returned.  In general, a VALID clause that returns a numeric value is indicating which field should be the next input field accessed by the READ.  In addition, a VALID clause that returns a numeric value instead of a logical value will cause the standard validation error message to be suppressed.
  193. If a zero is returned from a numeric VALID clause, the insertion point remains in the same field, indicating that a validation error has occurred (just as if a logical .F. has been returned).  However, since the standard error message is suppressed when using a numeric expression, a customized error message may be displayed if so desired.
  194. If a non-zero number is returned from a numeric VALID clause, the number is used to indicate the next field that the READ will input.
  195.  A positive number indicates the relative number of fields that the READ command should advance to determine the next GET field.  For example, if you're positioned on the fifth GET field and the VALID clause returns a two, the seventh GET field becomes the next input field.
  196.  A negative number indicates the relative number of fields that the READ command should back up to determine the next GET field.  For example, if you're positioned on the fifth GET field and the VALID clause returns a negative two, the third GET field becomes the next input field.
  197.  In either case, the value that was entered in the fifth GET field does not change.  Also, if the next GET field indicated by the VALID clause does not exist, the READ is terminated.
  198. @WARNING = NOTE: If the value of <var> is not modified during input (for instance, if Enter is pressed without first making other entries), then the RANGE check is not performed.  The VALID check is performed in all instances.
  199. SIZE <expN1>,<expN2>
  200. The SIZE specification controls the size and shape of the data field that will be displayed. <expN1> is the number of rows (or the height) and <expN2> is the number of columns (or the length).  The actual size of the field box is determined by the font size; the larger the font, the larger the field box will be.  If the keyword PIXEL is specified as part of the command, the SIZE clause is considered in pixel values.  The text will be displayed in the current screen font, unless the FONT clause is also specified.
  201. STYLE <expN>
  202. The STYLE specification controls the method of placing or displaying objects to an output device.  The output device can be the monitor or a print document.  This single, 32-bit numeric value (known as a word ) is divided into five 4-bit values, with the upper twelve bits of the STYLE word reserved for future use.  (If you use STYLE, be sure to use numeric values that set the upper bits to zero.)
  203. The value contained in the STYLE word affects five different text and object settings:
  204. Pen Pattern- The pattern that will be used for a line or box outline.
  205. Pen Width-The width of a line or box outline.
  206. Fill Pattern- The pattern that will be used to fill box objects.
  207. Radius- The radius value used with rounded rectangles.
  208. Transfer Mode- The method of pixel arrangement and placement used when displaying text and objects.
  209. Rectangles use the entire STYLE word, lines use all settings except the radius, and most other objects only use the Transfer Mode value.
  210. Using the STYLE clause in an @...SAY statement will suppress the automatic page eject feature of FoxBASE+/Mac if the coordinates of the output line are lower than the previous line.  If all output lines use the STYLE clause, the page EJECT command will need to be issued to eject the page from the printer.
  211. -Pen Pattern and FIll Pattern produce the same results for a given 4-bit arrangement.
  212. -The Pen Width portion of STYLE word determines the width of the line in pixels.
  213. -The Radius portion of STYLE determines the curvature on the corners of rounded rectangles.  With the exception that zero is no curvature, radius is calculated with the formula: radius=(radius value*2)+4.
  214. -The Transfer Mode portion of the STYLE word determines the method of pixel arrangement and placement that's used when displaying text and objects.  The Transfer Mode involves the interaction between the object you've selected and those objects that are behind it. On a machine with less than 4-bits of screen depth, the color modes will revert to regular transfer modes.
  215. Copy- This mode completely replaces what's behind the selected object with the selected object.
  216. Or- This mode causes the foreground portion only of the selected object to be placed on top of the object(s) behind; the objects are combined.
  217. Xor- This mode causes the foreground portion of the selected object, to invert the foreground of the object behind.
  218. Bic- This mode clears portions of the object behind using the foreground of the selected object.
  219. notCopy- This mode inverts the foreground and background of the selected object and completely replaces what's behind the selected object with the inverted object.
  220. notOr- This mode inverts the foreground and background of the selected object and causes only the background portion of the selected object to be placed on top of the object behind; the objects are combined, with the object(s) behind showing through the foreground portion.
  221. notXor- This mode inverts the foreground and background of the selected object and uses the background of the selected object, inverting it with the foreground of the object behind (producing a complement value).
  222. notBic- This mode inverts the foreground and background of the selected object and clears portions of the object behind using the background of the selected object.
  223. Blend- This color mode replaces pixels in the selected object with a weighted average of the colors of the object behind with the selected object.
  224. addPin- This color mode assigns the color closest to the sum of the RGB (red, green, blue) values of the selected object, pinned to a maximum allowable color of white.
  225. addOver- This color mode assigns the color closest to the sum of the RGB values for the object behind and the selected object.  This mode, unlike addPin, is not pinned to a maximum value, but rather wraps around if the maximum is exceeded (value minus 65536).
  226. subPin- This color mode assigns the color closest to the difference of the sum of the RGB values of the selected object and the RGB values of the selected object, pinned to a maximum allowable color of black.
  227. Transparent- This color mode replaces the pixels in the object behind with those pixels from the selected object that aren't equal to the background color.
  228. adMax- This color mode compares the pixels of the selected object and those of the object behind and replaces those pixels in the object behind with a color containing the greater saturation of each of the color components (RGB).
  229. subOver- This color mode assigns the color closest to the difference of the RGB values for the object behind and the selected object.  This mode, unlike subPin, is not pinned to a maximum value, but rather wraps around if the maximum is exceeded (65536 less the result).
  230. adMin- This color mode compares the pixels of the selected object and those of the object behind and replaces those pixels in the object behind with a color containing the lesser saturation of each of the color components (RGB).
  231.  FONT [<expC>][,<expN>]
  232. The FONT clause may be used with both the SAY and GET commands. When the FONT clause is specified the data sent to screen will be the font style <expC> and/or size <expN> specified.  This specification will override the current screen font. 
  233. The font name <expC> must be enclosed in standard character string delimiters, and the point size <expN> must be separated from the font name with a comma.  Either the font name, or the point size, or both may be specified.  If the font name is omitted, the comma preceding the point size is still required.  If either value is omitted, the omitted attribute will be the same as the current screen font.  Using the FONT clause without a font name or point size will result in an error. 
  234. To specifiy a typographical style in addition to the font and point size, add the following values, or any sum of these values, to the point size:
  235. VALUE,STYLE
  236. +256, Bold
  237. +512, Italic
  238. +1024, Underline
  239. +2048, Outline
  240. +4096, Shadow
  241. COLOR   <code>
  242. Foreground and background colors can be specified with the COLOR clause, using one of two approaches.  If no COLOR clause is specified then the text is displayed in the current screen color.
  243.  COLOR [<standard>][,<enhanced>]
  244. This COLOR clause allows you specify the standard and/or enhanced color settings to be used.  You specify the color settings with letter codes, using a character string expression that must be enclosed in quotation marks.  This is different from the SET COLOR command which does not allow quotation marks around the color codes.
  245. Standard and enhanced display colors are both determined by selecting a pair of the following color codes separated by a slash (/).
  246. For example: COLOR "R/W,G/B" or COLOR ",GB".
  247. COLOR  <expN>,<expN>,<expN>[,<expN>,<expN>,<expN>]
  248. The second variation of the color clause uses three or six numeric expressions to assign pen and fill colors.  The first three numeric expressions represent the red, green and blue (RGB) values to be assigned to the pen color, while the three optional expressions represent the RGB values of the fill color.  The numbers derived from each expression should be in the range of 0 to 65,535, although numbers greater than 65,535 roll-over to 0 (65,536=0, 65,537=1, etc.) and numbers less than zero roll-back to 65,535 (-1=65,535, -2=65,534, etc.).
  249. FUNCTION Editing Codes
  250.  A- Allow alphabetic characters only.
  251.  B- Left-justify numeric data.  Use with numeric data only.
  252.  C- A CR (credit) is displayed after a positive number.  Use with numeric data and the SAY clause only.
  253.  D- Edit data as a date using the current SET DATE format (e.g. BRITISH, GERMAN, etc.).  Use with date, character and numeric data.
  254.  E- Edit data as a European (BRITISH) date.  Use with date, character, and numeric data.
  255.  N-Does not allow data to be modified.  Especially useful with text edit regions.
  256.  R- Used with a <format> that contains characters other than PICTURE template codes, the characters are displayed but not stored in <var>.  Use with character data only.
  257.  S<n>- Limit screen display width to <n> characters where "<n>" is an integer constant.  Horizontally scroll the field within the <n> columns specified.  The rightarrow and leftarrow may be used to bring hidden portions of the field into view.  Use with character data only.
  258.  X- A DB (debit) symbol is displayed after negative numbers. Use with numeric data and the SAY clause only.
  259.  Z-The field is displayed as all blanks if its numeric value is zero.  Use with numeric data only.
  260.  (- Negative numbers are enclosed in parentheses when this function is used.  Use with numeric data only.   
  261.  !- Any character may be entered, however, alphabetic characters will be converted to uppercase.  Use with character data only.
  262. It's possible to combine some functions within a single picture option, such as "@CX", which will cause a CR or DB to be displayed after each number.  Certain combinations of function letters conflict and are therefore not allowed, such as "@DE".
  263. PICTURE Template Codes
  264. A PICTURE <format> may include any desired characters, however, only those characters listed below actively participate in editing and data entry.  If any other characters are entered in the format, they are displayed on output and, for input operations, appear in the screen field as comment information which is skipped over by the cursor.
  265. The characters which may be used with <format> are described below.  (Remember, if a format is a string literal, it must be enclosed in quotes.)
  266.  A- Allows only alphabetic characters to be entered.
  267.  L- Allows entry of logical data only.
  268.  N- Allows entry of letters and digits only.
  269.  X- Allows entry of any character.
  270.  Y- Allows entry of logical Y, y, N, n only.  This template will convert y and n to Y and N respectively.
  271.  9- Allows entry of digits only for character data.  Allows entry of digits and signs for numeric data.
  272.  #- Allows entry of digits, blanks and signs.
  273.  !- Converts lowercase letters to uppercase letters.
  274.  $- Fixed dollar sign.  A dollar sign is displayed a fixed distance in front of the numeric value.
  275.  $$-Floating dollar sign.  A dollar sign is displayed directly to the left of the numeric value.  The right dollar sign holds a digit position.
  276.  *- Asterisks are displayed in front of the numeric value.  May be used in combination with a '$' for check protection.
  277.  .- Specify decimal point position.
  278.  ,- Used to separate digits left of the decimal point.
  279. See also: COL( ), EDIT, INSERT, PCOL( ), PROW( ), READ, ROW(<N>), SET BELL, SET CONFIRM, SET DEVICE, SET FIELDS, SET FORMAT, SET INTENSITY, UDF's
  280. digits left of the decimal point.
  281.  See also: COL( ), EUser-defined Check Box
  282. Format:    @ < [PIXELS] row,col>
  283.         SAY|GET <varN>\<varL>
  284.         PICTURE|FUNCTION "[@]*c <string>"
  285.         [SIZE<expN1>,<expN2>]
  286.         [STYLE<expN>]
  287.         [FONT [<expC>][<,expN>]]
  288.         [COLOR<code>]
  289. Once the check box has been activated by issuing the READ command, the pointer changes to button pusher when is is positioned over a check box.  Selecting a check box that is not checked will cause the box to become checked.  Selecting a checked box results in removal of the check.
  290. Check boxes differ from other screen I/O mechanisms because only one check box may be specified per GET statement.  The GET variable may be either numeric or logical, memory variable or database field.  Depending on the variable type, an unchecked box corresponds to the value 0 or .F. and a checked box to a 1 or .T.. 
  291. Rows are numbered from top to bottom.  Columns are numbered from left to right.  
  292. When the box specified is checked or unchecked, a specific value is returned to <var>.  The variable must be declared prior to issuing the @
  293. GET command and may be a memory variable or a numeric field in a database file.  The GET variable may be either numeric or logical.  Depending on the variable type, an unchecked box corresponds to the value 0 or .F. and a checked box to a 1 or .T.. 
  294. To check or uncheck a check box, just move the pointer over the check box and click the mouse.  
  295. When the keyword PICTURE is specified, an 
  296.  preceded by an 
  297.  indicates that the <string> to follow is to be treated as a check box.  The keyword FUNCTION may be specified as an alternative to the keyword PICTURE.  If FUNCTION is used as an alternative, it is not necessary to include the 
  298.  before the 
  299. <string> is a character string literal which may contain any desired characters except a quote or a semicolon. 
  300. The SIZE specification has no effect on the size or placement of check box controls.  It's provided for syntactical compatibility with and ease of conversion to other @SAY/GET controls.
  301. The STYLE specification controls the method of placing or displaying objects to an output device.  The output device can be the monitor or a print document.
  302. When the FONT clause is specified the data sent to screen will be the font style <expC> and/or size <expN> specified.  This specification will override the current screen font. 
  303. Foreground and background (pen and fill) colors can be specified with the COLOR clause.  If no COLOR clause is specified then the picture is displayed in the current screen color.
  304. The text in a check box is displayed in the current screen font and color unless the FONT and/or COLOR clauses are specified. For more detailed information on specifing the SIZE, STYLE, FONT and COLOR refer to the @ GET/SAY topic.
  305. User-defined Picture Buttons 
  306. Format:    @ < [PIXELS] row,col>
  307.         SAY|GET <varN>
  308.         PICTURE|FUNCTION "[@]*[<options>]
  309.         <type>nnn[;<type>nnn][;
  310. ][;<type>nnn]"
  311.         [SIZE<expN1>,<expN2>]
  312.         [STYLE<expN>]
  313.         [COLOR<code>]
  314. By default picture buttons are displayed in a horizontal row.  All buttons regions are the same size as determined by the size of the largest picture specified in the list.  That is, all button widths are set to the minimum width and height needed to contain the largest picture in the picture list.
  315. Once the picture button has been activated by issuing the READ command, the pointer changes to the button-pusher when it is positioned over a picture button.  By default, once a button has been pushed, the READ is terminated.  To alter the default behavior to allow for non-terminating picture buttons, the <option> code 
  316.  can be specified.
  317. Rows are numbered from top to bottom.  Columns are numbered from left to right.  
  318. The GET clause designates the variable, <varN>, that is read using the picture button array.  <varN> must be declared prior to issuing the @
  319. GET command and may be a numeric memory variable or a numeric field in a database. 
  320. To select a picture button, just move the pointer over the desired button and click the mouse.  When the pointer is in the button region it will change to the button pusher.  
  321. At the time of termination of the @
  322. GET / READ, the value of <varN> is determined by the button selected.  For example, if the first button is pressed <varN> = 1, if the second button is pressed <varN> = 2, etc.  After the READ is terminated, the next step is to include the variable in a structured programming command such as a CASE statement.
  323. If a button is not selected, the value of <varN> will be 0.
  324. When the keyword PICTURE is specified, an 
  325.  preceded by an 
  326.  indicates that the <string>(s) to follow are to be treated as buttons.  The keyword FUNCTION may be specified as an alternative to the keyword PICTURE.  If FUNCTION is used as an alternative, it is not necessary to include the 
  327.  before the 
  328. .  If no <options> are specified following the 
  329.  then one or more spaces must follow the 
  330. Options are specific letters, which control the behavior of text buttons.
  331. There are three options which may be specified to alter the behavior of text buttons:
  332. H     Display buttons horizontally. This is also the default display mode.     
  333. V    Display buttons vertically.
  334. N    Don't terminate READ when button is pressed. This implies that the currently selected button will be intensified.
  335. Note that the <options> 
  336.  may be combined with the <option> 
  337. Picture Buttons consist of ICON's, ICON#'s, and PICT's from the resource or FoxUSER file as well as pictures from a FoxBASE+/Mac database.  Single @
  338. GET statements may contain one specific type of picture or a combination of types.  To specify the type of button to be created one of four arguments must be specified followed by its corresponding number <nnn> if the button is to be accessed from the resource or FoxUSER file.  
  339. \I<nnn>
  340.     A user button is created using ICON resource number nnn.
  341. \#<nnn>
  342.     A user button is created using ICON# resource number nnn.
  343. \P<nnn>    
  344.     A user button is created using PICT resource number nnn.
  345.     A user button is created using a picture from the current record in an open database.  There is no resource number associated with this type.  The \F type may not be mixed with other picture buttons or text buttons.  Furthermore, only one picture button of this type may be included in an @
  346. GET statement.  If you want to have multiple picture fields behaving as buttons simultaneously, simply have multiple GETs active.
  347. The SIZE specification controls the size and shape of the frame that the picture will be displayed in. <expN1> is the height of the frame that the picture will be placed in (in rows or PIXELS) and <expN2> is the width of the frame (in columns or PIXELS).  The actual size of the field box is determined by the current font size -- the larger the font, the larger the field box will be -- unless the keyword PIXELS is specified as part of the command, then the SIZE clause is considered in pixel values.
  348. If no SIZE clause is given with this command, the picture will be displayed in a frame determined by the SET FRAME TO command.
  349. The STYLE specification controls the method of placing or displaying the picture objects to the output device.  The output device can be the monitor or a print document.  This single, 32-bit numeric value (known as a word) is divided into two 4-bit values for picture output, with the upper twelve bits of the STYLE word reserved for future use.
  350. Since pictures don't have any pen and fill attributes, the STYLE options for pictures are stored in the first two bits, 0 and 1.
  351. If bit zero is not set (value 0), the picture is scaled to fit the given size and displayed isometric (proportional).
  352. If bit zero is set (value 1), the picture is clipped (not scaled).
  353. If bit one is set (value 2), the picture is scaled to fit the given size, but not isometric.
  354. Foreground and background (pen and fill) colors can be specified with the COLOR clause.  If no COLOR clause is specified then the picture is displayed in the current screen color.
  355. For more detailed information on specifing the COLOR refer to the @ GET/SAY topic.
  356. User-defined Popups
  357. Format:    @ < [PIXELS] row,col>
  358.         SAY|GET <varN>
  359.         PICTURE|FUNCTION  "[@]^ 
  360.         <string1>[;<string2>][;
  361. ][;<stringN>]"
  362.         [SIZE<expN1>,<expN2>]
  363.         [STYLE<expN>]
  364.         [FONT [<expC>][<,expN>]]
  365.         [COLOR<code>]
  366. By default popups are displayed in the current screen font.  The width of the popup is determined by the length of the longest <string> specified in the string list.  That is, the width is set to the minimum width which will contain the longest string in the <string> list.
  367. Once the popup has been activated by issuing the READ command, the pointer changes to the button-pusher when it is positioned over the popup.  To access items in the popup, click and drag through the list displayed over the popup until the item to be selected is highlighted.  Release the mouse button and the highlighted item is displayed on the popup. 
  368. Rows are numbered from top to bottom.  Columns are numbered from left to right. 
  369. The GET clause designates the variable, <varN>, that is read using the popup.  <varN> must be declared prior to issuing the @
  370. GET command and may be a numeric memory variable or a numeric field in a database. 
  371. The initial value of <varN> determines which <string> is displayed on the popup when the READ is issued.  If the initial value of <varN> falls between 1 and the value of n, then the corresponding <string> in the string list is displayed on the popup.  However, if the initial value of <varN> is outside the range of 1 to n, then the first <string> in the string list is displayed on the popup.  For example, if there are four <string>s in the string list, a value of <varN> ranging from 1 to 4 will cause one of the four items to be placed on the popup.  A value less than 1 or greater than 4 results in the first <string> in the list to be displayed on the popup.
  372. Once the popup has been activated by issuing the READ command, the pointer changes to the button-pusher when it is positioned over the popup.  To access the items in the popup, click and drag through the list displayed over the popup until the item to be selected is highlighted.  Release the mouse button and the highlighted item is displayed on the popup. 
  373. At the time of termination of the @
  374. GET / READ, the value of <varN> is determined by the <string> displayed on the popup.  For example, if the first item is displayed <varN> = 1, if the second item is selected <varN> = 2, etc.  After the READ is terminated, the next step is to include the variable in a structured programming command such as a CASE statement.
  375. When the keyword PICTURE is specified, an 
  376.  preceded by an 
  377.  indicates that the <string>(s) to follow are to be treated as popups.  The keyword FUNCTION may be specified as an alternative to the keyword PICTURE.  If FUNCTION is used as an alternative, it is not necessary to include the 
  378.  before the 
  379. .  If no <options> are specified following the 
  380.  then one or more spaces must follow the 
  381. <string>  is a character string literal which may contain any desired characters except a quote or a semicolon.  The text in popups is displayed in the current screen font and color unless the FONT and/or COLOR clauses are specified. 
  382. The width of the popup is determined by the length of the longest <string> specified in the string list.  That is, the width is set to the minimum width which will contain the longest string in the <string> list.
  383. If more than one <string> is specified, the <string>s must be separated by a semicolon (;). 
  384. The SIZE specification has no effect on the size or placement of popup menu controls.  The height is preset, and the width of the popup is determined by the length of the longest <string> specified in the string list.  That is, the width is set to the minimum width which will contain the longest string in the <string> list.  This SIZE clause is provided for syntactical compatibility with and ease of conversion to other @SAY/GET controls.
  385. The STYLE specification controls the method of placing or displaying objects to an output device.  The output device can be the monitor or a print document.  
  386. When the FONT clause is specified the data sent to screen will be the font style <expC> and/or size <expN> specified.  This specification will override the current screen font. 
  387. Foreground and background (pen and fill) colors can be specified with the COLOR clause.  If no COLOR clause is specified then the picture is displayed in the current screen color.
  388. For more detailed information on specifing the SIZE,STYLE, FONT, and COLOR refer to the @ GET/SAY topic.
  389. User-defined Radio Buttons
  390. Format:    @ < [PIXELS] row,col>
  391.         SAY|GET <varN>
  392.         PICTURE|FUNCTION "[@]*R[<options>]
  393.         <string1>[;<string2>][;
  394. ][;<stringN>]"
  395.         [SIZE<expN1>,<expN2>]
  396.         [STYLE<expN>]
  397.         [FONT [<expC>][<,expN>]]
  398.         [COLOR<code>]
  399. By default radio buttons are displayed in the current screen font in a horizontal row.  The area consumed by each radio button is determined by the length of the longest <string> specified in the string list.  That is, all button widths are set to the minimum width needed to contain the longest string in the <string> list.
  400. Once the radio button has been activated by issuing the READ command, the pointer changes to the button-pusher when it is positioned over a radio button.  Only one radio button in the list is selected at any given time. 
  401. Rows are numbered from top to bottom.   Columns are numbered from left to right.  
  402. The GET clause designates the variable, <varN>, that is read using the radio button array.  <varN> must be declared prior to issuing the @
  403. GET command and may be a memory variable or a numeric field in a database. 
  404. The value of <varN> determines which radio button is selected when the READ command is issued.  If the initial value of <varN> falls between 1 and the value of n, then the corresponding radio button is selected.  However, if the initial value of <varN> is outside the range of 1 to n, then no buttons are selected until the user selects one.  For example, if there are four radio buttons, a value of <varN> ranging from 1 to 4 will activate one of the four radio buttons.  A value less than 1 or greater than 4 results in a list of radio buttons displayed with no radio button selected. 
  405. To select a radio button, just move the pointer over the desired button and click the mouse.  Only one radio button is selected at a time and selecting a radio button deselects the previously selected radio button. 
  406. At the time of termination of the @
  407. GET / READ, the value of <varN> is determined by the button selected.  For example, if the first button is pressed <varN> = 1, if the second button is pressed <varN> = 2, etc.  After the READ is terminated, the next step is to include the variable in a structured programming command such as a CASE statement.
  408. When the keyword PICTURE is specified, an 
  409.  preceded by an 
  410.  indicates that the <string>(s) to follow are to be treated as radio buttons. The keyword FUNCTION may be specified as an alternative to the keyword PICTURE.  If FUNCTION is used as an alternative, it is not necessary to include the 
  411.  before the 
  412. .  If no <options> are specified following the 
  413.  then one or more spaces must follow the 
  414. Options are specific letters, which indicate the behavior of radio buttons.  The 
  415.  that preceeds the 
  416.  is actually an <option>.  It must be specified or the radio button will be a text button.
  417. There are two options which may be specified to alter the behavior of radio buttons:
  418. H     Display buttons horizontally. This is also the default display mode.     
  419. V    Display buttons vertically.
  420. This is a character string literal which may contain any desired characters except a quote or a semicolon.  The text in buttons is displayed in the current screen font and color unless the FONT and/or COLOR clauses are specified. 
  421. The actual length of each string entered is calculated.  All button widths are set to the minimum width which will contain the longest string in the PICTURE/FUNCTION clause.
  422. If more than one <string> is specified, the <string>s must be separated by a semicolon (;). 
  423. The SIZE specification controls the spacing of the radio buttons that will be displayed. <expN1> holds the height and spacing values.  <expN2> indicates length, but the actual length of each radio button text string is calculated, and all button widths are set to the minimum width which will contain the longest string.  If the keyword PIXEL is specified as part of the command, SIZE is considered in pixel values.
  424. The STYLE specification controls the method of placing or displaying objects to an output device.  The output device can be the monitor or a print document.
  425. When the FONT clause is specified the data sent to screen will be the font style <expC> and/or size <expN> specified.  This specification will override the current screen font.
  426. Foreground and background (pen and fill) colors can be specified with the COLOR clause.  If no COLOR clause is specified then the text is displayed in the current screen color.
  427. For more detailed information on specifing the SIZE, STYLE, FONT, and COLOR refer to the @ GET/SAY topic.
  428. Scrollable List    Make a selection using a scrollable list
  429. Format:        @ < [PIXELS] row,col> GET <varN> 
  430.             FROM <array>[,<expN>[,<expN>]]
  431.             SIZE <expN1>,<expN2>
  432.             [STYLE<expN>]
  433.             [FONT [<expC>],[<expN>]] 
  434.             [COLOR <code>]
  435. This variation of the @  GET command is used for specifying a rectangular, scrollable box which contains a list from which the user can select one choice.  The list can be scrolled with the standard scroll bars (if needed), both vertically and horizontally.
  436. For screen I/O, the first row is number 0.  Rows are numbered from top to bottom.  The number of available rows is determined by the FONT and SIZE declaration in the SCREEN command.  If the optional PIXEL clause is present, the row coordinate is the number of pixels from the top of the screen and is not affected by the current screen font.
  437. For screen I/O, the first column is column 0.  Columns are numbered from left to right.  The number of available columns is determined by the FONT and SIZE declarations in the SCREEN command.  If the optional PIXEL clause is present, then the column coordinate is the number of pixels from the left edge of the screen and is not affected by the current screen font.
  438. The GET clause designates the variable, <varN>, that is selected from the list.  <varN> must be declared prior to issuing the @GET command and may be a numeric memory variable or a numeric field in a database.  The READ command must be used in conjunction with the GET to initiate input into the GET variable.
  439. The initial value of <varN> determines which <array> item is initially selected when a READ is issued and the scrollable list first appears.  The <array> must have been dimensioned and the <array> items declared before issuing the @GET statement.
  440. When a READ is issued, if the initial value of <varN> falls within the subscript range of the named <array>, then the corresponding <array> item is automatically selected in the list.  However, if the initial value of <varN> is outside the subscript range of the <array>, then none of the array items is selected.  For example, if there are four <array> items in the text list, assigning <varN> a value ranging from 1 to 4 will cause one of the four items in the list to be pre-selected.  A value less than 1 or greater than 4 (outside the subscript range) results in none of the items in the list being pre-selected.
  441. Once the scrollable list has been activated by issuing the READ command, the pointer changes to the button-pusher when it is positioned over the list box.  To choose an item from the list, all the user need do is scroll through the list, if necessary, until the item to be chosen can be seen.  The text item is then selected by clicking and pressing return or by double-clicking.
  442. When the @GET / READ is terminated, the value of <varN> is determined by the <array> item that was selected by the user.  If one of the displayed items was not selected by the user, the value of <varN> remains unchanged.
  443. The @...GET command that creates a scrollable list can take one or two optional numeric expressions in order to limit the number of array items to be used in the list.
  444. If the array is one-dimensional, one numeric expression should be used.  This number will cause the specified number of array elements (beginning with the first) to be displayed in the scrollable list.
  445. If the array is two-dimensional, two numeric expressions can be used to display a certain number of rows and columns from the array (beginning with element 1,1).
  446. The SIZE specification controls the size and shape of the scrollable list box that will be displayed. <expN1> is the number of rows and <expN2> is the number of columns.  The actual size of the box is determined by the font size  the larger the font, the larger the list box will be (unless the keyword PIXEL is specified as part of the @ command, in which case the SIZE is considered in pixels).  The text will be displayed in the current screen font, unless the FONT clause specifies otherwise.
  447. The STYLE specification controls the method of placing or displaying objects to an output device.  The output device can be the monitor or a print document.  This single, 32-bit numeric value (known as a word) is divided into five 4-bit values, with the upper twelve bits of the STYLE word reserved for future use.  (Complete information on the STYLE word can be found at the @SAY/GET command.)
  448. When the FONT clause is specified the data sent to the screen will be in the font style <expC> and/or size <expN> specified.  This specification overrides the current screen font.
  449. The font name <expC> must be enclosed in standard character string delimiters, and the point size <expN> must be separated from the font name with a comma.  Either the font name or the point size, or both, may be specified.  If the font name is omitted, the comma preceding the point size is still required.  If either value is omitted, the omitted attribute will be the same as the current screen font.  Using the FONT clause without a font name or point size will result in an error.
  450. Foreground and background colors can be specified with the COLOR clause.  If no COLOR clause is specified then the text is displayed in the current screen color.
  451. Get/Say Format
  452. Pict Copy Alert
  453. pref    Duplicate
  454. Template compiler error 
  455. Template compiler progress
  456. Other size
  457. Gen askfor
  458. Getfname
  459. Copy to
  460. Quick report    Gen input
  461. Save as
  462. Define Layouts
  463. Save scrn as
  464. Report
  465. Preview
  466. Title/Summary    @ Get/Say    Band Size
  467. Page Layout
  468. report Rect
  469. Total
  470. Grouping...
  471. Char Page Setup
  472. Round Rect
  473. Group info
  474. New Layout
  475. Page Setup Size
  476. Quick form
  477. SCRN Drag pattern
  478. BrowsUser-defined Text Buttons
  479. Format:    @ < [PIXELS] row,col>
  480.         SAY|GET <varN>
  481.         PICTURE|FUNCTION "[@]*[<options>]
  482.         <string1>[;<string2>][;
  483. ][;<stringN>]"
  484.         [SIZE<expN1>,<expN2>]
  485.         [STYLE<expN>]
  486.         [FONT [<expC>][<,expN>]]
  487.         [COLOR<code>]
  488. By default text buttons are displayed in the current screen font in a horizontal row.  All buttons are the same size as determined by the length of the longest <string> specified in the string list.  That is, all buttons widths are set to the minimum width needed to contain the longest string in the <string> list.
  489. Once the text button has been activated by issuing the READ command, the pointer changes to the button-pusher when it is positioned over a text button.  By default, once a button has been pushed, the READ is terminated.  To alter the default behavior to allow for non-terminating text buttons, the <option> code 
  490.  can be specified.
  491. Rows are numbered from top to bottom.  Columns are numbered from left to right.  
  492. The GET clause designates the variable, <varN>, that is read using the text button array.  <varN> must be declared prior to issuing the @
  493. GET command and may be a numeric memory variable or a numeric field in a database. 
  494. To select a text button, just move the pointer over the desired button and click the mouse.  Once a text button has been selected, the READ is terminated unless the 
  495.  option has been specified.
  496. At the time of termination of the @
  497. GET / READ, the value of <varN> is determined by the button selected.  For example, if the first button is pressed <varN> = 1, if the second button is pressed <varN> = 2, etc.  After the READ is terminated, the next step is to include the variable in a structured programming command such as a CASE statement.
  498. If a button is not selected, the value of <varN> will be 0.
  499. When the keyword PICTURE is specified, an 
  500.  preceded by an 
  501.  indicates that the <string>(s) to follow are to be treated as buttons.  The keyword FUNCTION may be specified as an alternative to the keyword PICTURE.  If FUNCTION is used as an alternative, it is not necessary to include the 
  502.  before the 
  503. .  If no <options> are specified following the 
  504.  then one or more spaces must follow the 
  505. Options are specific letters, which indicate the behavior of text buttons.
  506. There are three options which may be specified to alter the behavior of text buttons:
  507. H     Display buttons horizontally. This is also the default display mode.     
  508. V    Display buttons vertically.
  509. N    Don't terminate READ when button is pressed. This implies that the currently selected button will be intensified.
  510. This is a character string literal which may contain any desired characters except a quote or a semicolon.  The text in buttons is displayed in the current screen font and color unless the FONT and/or COLOR clauses are specified. 
  511. The actual length of each string entered is calculated.  All button widths are set to the minimum width which will contain the longest string in the PICTURE/FUNCTION clause.
  512. If more than one <string> is specified, the <string>s must be separated by a semicolon (;). 
  513.  The SIZE specification controls the size and spacing of the text buttons that will be displayed. <expN1> holds the height and spacing values, and <expN2> has the length.  If the keyword PIXEL is specified as part of the command, the SIZE clause is considered in pixel values.
  514. The STYLE specification controls the method of placing or displaying objects to an output device.  The output device can be the monitor or a print document. 
  515. When the FONT clause is specified the data sent to screen will be the font style <expC> and/or size <expN> specified.  This specification will override the current screen font.
  516. Foreground and background (pen and fill) colors can be specified with the COLOR clause.  If no COLOR clause is specified then the text is displayed in the current screen color.
  517. For more detailed information on specifing the SIZE, STYLE, FONT, and COLOR refer to the @ GET/SAY topic.
  518. Text Edit Region  
  519.    Perform input in a specified region
  520. Format:    @ < [PIXELS] row,col> 
  521.         GET <memo>|<varC>
  522.         SIZE <expN1>,<expn2> [SCROLL]
  523.         [STYLE<expN>]
  524.         [FONT [<expC>][<,expN>] 
  525.         [COLOR<code>]
  526. This variation of the @ 
  527.  GET command is used for specifing rectangular text editing regions for character and memo data.  All standard edit features are available in a text edit region, including cut, copy and paste.  Text can be scrolled in one of three ways; dragging with the mouse, pressing the up and down arrow keys, or using the scroll bar (if one has been specified).  Text is scrolled vertically only, word-wrap is in effect horizontally.  
  528. Rows are numbered from top to bottom.   Columns are numbered from left to right.  
  529. A full screen edit operation is undertaken starting at <row,col> in the area specified in the SIZE clause.  A character variable, character field, or a memo field may be specifed as the GET field.  The READ command must be used in conjunction with the GET to initiate editing of the GET fields.  If INTENSITY is SET OFF, the default setting, the GET fields are displayed with a border.  If INTENSITY is SET ON, the GET fields are displayed in 
  530. intense
  531.  screen display mode 
  532.    normally inverse video.
  533. The SIZE specification controls the size and shape of the text edit region. <expN1> is the number of rows in the text edit region and <expN2> is the number of columns in the text edit region.  The actual size of the text edit region is determined by the font size (unless the keyword PIXEL is specified as part of the @ command).  The larger the font, the larger the text edit region.  Unless the font clause is specified the text will be displayed in the current screen font.
  534. If PIXEL is specified as part of the screen coordinate clause, then the SIZE of the text edit region is determined in pixels.
  535. Optionally, the keyword SCROLL may be specifed to place a scroll bar on the right side to the text edit region.
  536. If the text edit region is not large enough to hold one line of text the error message 
  537. Not enough room for one line of text.
  538.  will be displayed.  This could occur in the case of a text edit region specified in pixels which is not  tall enough to hold a row of characters.  To correct this situation, simply increase the value of <expN1> in the SIZE clause.
  539. The STYLE specification controls the method of placing or displaying objects to an output device.  The output device can be the monitor or a print document. 
  540. When the FONT clause is specified the data sent to screen will be the font style <expC> and/or size <expN> specified.  This specification will override the current screen font.
  541. Foreground and background (pen and fill) colors can be specified with the COLOR clause.  If no COLOR clause is specified then the text is displayed in the current screen color.
  542. For more detailed information on specifing the SIZE, STYLE, FONT, and COLOR refer to the @ GET/SAY topic.
  543.  GET 
  544.  VALID    Enhanced command for validating data input
  545. Format:        @ 
  546.  GET 
  547.  VALID <expN>
  548. The VALID clause associated with GET commands can now optionally return a numeric value rather than a logical value.  Depending on the value of the numeric expression returned, different types of action are taken.  In general, returning a numeric value indicates which field should be designated as the next input field within a READ.  In addition, returning a numeric value also causes the standard validation error message to be suppressed.  
  549. If a zero is returned, the insertion point stays positioned in the same field implying that a validation error has occurred (just as if .F. had been returned); however, a customized error message may be displayed if desired.
  550. A positive number is used to indicate the relative number of fields to advance to determine the next input field.  For example, if you are positioned in the fifth get field and a two is returned, the seventh get field is now the current get field.  The value that was entered in the fifth get field does not change.
  551. A negative number is used to indicate the relative number of fields to backup to determine the next input field.  For example, if you are positioned in the fifth get field and a negative two is returned, the third get field is now the current get field.  The value that was entered in the fifth get field does not change. 
  552. If there is no get field corresponding to the number skipped, the READ is terminated.
  553. Format:    ABS(<expN>)
  554. The ABS function returns the absolute value of a numeric expression.
  555. . ? ABS(-45)
  556. . ? ABS(10-30)
  557. . ? ABS(30-10)
  558. ACCEPT  
  559.    Accept character string data from screen
  560. Format:    ACCEPT [<expC>] TO <mem_var>
  561. This command allows you to enter character data directly into a memory variable without any need to surround the characters with quotation marks.  Data entered is always stored as a character string.
  562. If the optional <expC> is provided, it is displayed on the screen to remind the user which data is being requested.  If <expC> is a character string literal, it must be delimited with single quotes (' '), double quotes (
  563. ) or brackets ([ ]).
  564. If <mem_var> has not already been defined, it will be created by the ACCEPT command.  There is a 254 character maximum per <mem_var>.
  565. See also: INPUT,WAIT
  566. m INPUT in that:
  567.   data is always treated as character data instead of being assigned its type based on the value input.
  568.   no quotation marks are required around the character data.
  569. See also:        INPUT, WAIT
  570. ALERT 
  571.    User-Defined Alert Boxes
  572. Format:    ALERT [CAUTION|STOP|NOTE<expN>
  573.         [TO <varN>]
  574.          [AT <coord>]
  575.         [<expC1>[,<expC2>[,<expC3>[,<expC4>]]]]
  576. The ALERT command displays an alert box, waits for a user response and, optionally returns a value based on the response.
  577. The CAUTION, STOP or NOTE clauses select one of three different icons for display in the ALERT box.  
  578. <expN> is the resource number of the alert box in the FoxUSER file.  We have provided twelve standard alert boxes with one, two and three button response options.  ALERTs one through six are displayed on the following page.  ALERTs seven through twelve are identical to ALERTs one through six respectively except they permit larger messages.
  579. The <expN> associated with a particular ALERT is the resource number less 256.  Resources numbers 257 through 268 are associated with the predefined alerts.  The resource number assigned to new ALERTs should be in the range 269 through 512.
  580. Optionally, a numerical value associated with the button which is pressed can be stored TO <varN>.  The highlighted button returns 1.  All other buttons are assigned values based on their position in the alert box.  The assignment is from left to right.  Excluding the highlighted button, the first button returns 2, the second 3, etc. 
  581. Optionally, the ALERT can be specifically placed with the AT <coord> clause, where <coord> represents the position at which the upper-left corner of the ALERT will be placed.  These coordinates are interpreted in pixels from the top and left edges of the screen, respectively.
  582. To allow flexible customized messages, the alert box can contain up to four text expressions (<expC>). 
  583. ALIAS
  584. Format:    ALIAS([<expN>])
  585. The ALIAS function returns the alias of the specified workarea.  If the argument is omitted, it returns the alias of the currently selected workarea.  If no database is open in the specified workarea the null string is returned.
  586. . SELECT A
  587. . USE Video
  588. . SELECT B
  589. . USE Customer ALIAS Cust
  590. . ? ALIAS()
  591. . ? ALIAS(1)
  592. VIDEO
  593. end from
  594. Total
  595. Copy to
  596. Copy to
  597. Total
  598. Color bars
  599. Foreground
  600. Background
  601. Status
  602. Count
  603. Average
  604. Count
  605. Average
  606. System Message
  607. Replace
  608. Replace
  609. Yes NoAPPEND  
  610.    Append records in full-screen mode
  611.  Append records
  612.  Format: APPEND [HEADINGS <expC>[,<expC>]]
  613. There are several forms of the APPEND command, and all forms add records to the end of the database currently in USE. 
  614. This variation of the APPEND command brings forward an input/editing window with a blank record displayed.  If a valid format file (.fmt) has been opened for use with the current database, the input screen specified by that file appears.  If no format is set, the input window assumes the default layout -- field names are displayed to the left and the input fields are outlined.
  615. The default Append window has the name of the database you are appending records to in the title bar (unless you use HEADINGS).  This window, like the Browse, has a delete/recall column along the left-most edge that allows you to mark and unmark records for deletion just by clicking.  The area is highlighted when a record is marked.  There are also scrolling and window sizing controls that provide complete accessibility to all data in the record and in the database.
  616. If a format is set, the input/edit screen specified in that file comes forward and is activated, and an Append> menu appears on the right end of the menu bar.  (A format is set in the Setup dialog or with the SET FORMAT TO command.)
  617. The options in the Append menu allow you to transfer to the Browse window (see BROWSE for more information), move to the Next or the Previous record in the database, or move to the Top of the database or to the Bottom.
  618. If a format is not set and the default window appears, the Append menu will only contain the Browse option.  The default window has scrolling controls that take the place of the movement options.
  619. While filling fields in the Append window, pressing the Return or Tab key when positioned in the last field of the last record will cause another record to be Appended.
  620. The Append can be aborted, and the current record abandoned, by pressing the Escape key (or Command-period) while the cursor remains in the first field (even if data is entered).  Note: Only the current record is discarded.  All previously Appended records remain in the database.
  621. To exit from Append, close the Append window.
  622. When the LAST clause is specified, the APPEND window is displayed as it was during the previous APPEND session for the current database.  This includes the font, window size, window position, fields sizes, window title, fields and field titles.  When APPEND is issued via the interface, it is automatically generated with the LAST clause.  To reinitilize the APPEND window, simply issue APPEND without a LAST clause from either the command window or a program.  
  623. The HEADINGS option allows you to change the default window title at the top of the Append window and the field headings that are displayed to the left, as well as the width of the fields that the data will be displayed in.
  624. The first <expC> is a character string or expression that will replace the default title of the Append window. The name of the database is displayed at the top of the window if this option is not used.
  625. The second <expC> is a character string or expression that specifies field titles and column widths for the input/edit fields in the following fashion:
  626. 1. Information for each field is separated by semi-colons:
  627.      "Field 1;Field 2;;Field 4"
  628. 2. Column width information is separated from field title information with a colon:
  629.      "Last Name:20;First Name:20;Middle Initial;:10"
  630. In the example above, the first field will have the title Last Name and will be displayed in a column that's 20 characters wide; the next field will have the title First Name and it, too, will be 20 characters wide; the Middle Initial field will be displayed with just the title changed (no change to the width); and the fourth field in the window will be displayed in a 10 character column using the field name from the data<->base structure.  Fields in the database that go beyond those listed in the <expC> are displayed in the default format, using their database field names and the width from the database structure.
  631. See also: SET CARRY, SET FORMAT TO
  632. l have the title First Name and it, too, will be 20 characters wide; the Middle Initial field will be displayed with just the title changed (no change to the width); and the fourth field in the window will be displayed in a 10 character column using the field name from the data<->base structure.  Fields in the database that go beyond those listed in the <expC> are displayed in the default format, using their database field names and the w
  633. APPEND BLANK  
  634.    Append blank record to database
  635. Format:    APPEND BLANK
  636. APPEND BLANK adds one record, entirely filled with spaces, to the end of the database currently in USE.  This command is most often used in programs to extend a database.  Values can  be placed in the field of the new record using a variety of methods.  Perhaps the most common method is to use REPLACE to insert the values of memory variables, literals, or values from other databases into the new record's fields.
  637. APPEND FROM  
  638.    Append from a file to the active database
  639. Format:    APPEND FROM <file>
  640.         [FIELDS <fieldlist>]
  641.         [FOR <expL>]
  642.         [WHILE  <expL>]
  643.         [TYPE SDF] [TYPE DELIMITED [WITH<delimiter>|BLANK|TAB]]
  644. This form of APPEND adds records to the end of the active database from data in <file>. 
  645. APPEND FROM supports an optional FIELDS list.  This form allows only the named fields to be eligible for APPENDing.
  646. If the FOR <expL> clause is included, a new record is appended for each record in the FROM <file> for which <expL> is true.  APPENDing continues until the end of the FROM file is reached.  If the FOR clause is omitted, records are added until the FROM <file> is exhausted.  If the WHILE <expL> clause is present, records will be APPENDed as long as <expL> is true.   <expL> should normally reference fields which are contained in the active database.
  647. The TYPE clause must be used if the FROM <file> is not a database.  The TYPE clause may be used to specify other file types.  The available file types are DELIMITED and SDF.
  648. A DELIMITED file is an ASCII text file in which each record ends with a carriage return and line feed.  Fields are normally separated by commas, and character fields are additionally delimited by double quotation marks.  
  649. However, the DELIMITED WITH BLANK or TAB options may be used to specify files which contain fields separated by one space or one tab rather than by commas.
  650. The DELIMITED WITH <delimiter> option may be used to indicate that character fields are delimited by a character other than a double quotation mark. 
  651. AN SDF file is an ASCII text file in which records and fields within records have a fixed length and end with a carriage return and line feed.
  652. The filename extension is assumed to be 
  653.  for DELIMITED and SDF format files.  If the file you will be APPENDing from has a different extension, the extension must be specified.
  654. ension, the extension must be specified.
  655. different extension, the extension must be specified.
  656. Tip:  Use the MODIFY FILE command to examine Vidtxt.ASC
  657. Format:    ASC(<expC>)
  658. The ASC function returns the ASCII code equivalent of the leftmost character in a character string expression.
  659. Video
  660. . DISPLAY Title
  661. RECORD#    TITLE
  662. 1            AMADEUS
  663. . ? (Title)
  664. . ? ASC("A")
  665. . ? ASC("a")
  666. _PANRIGHT     10        /* ^B -- pan user's window to the right */
  667. #define SC_PANLEFT        11        /* ^Z -- pan user's window to the left  */
  668. #define SC_MENU         12        /* ^Home -- exit - display a menu        */
  669. #define SC_HELP         13        /* F1 -- exit code when terminator = F1 */
  670. #define SC_RUNOVER        14        AT
  671. Format:    AT(<expC1>,<expC2>)
  672. The AT function has two character strings or character string expressions as its arguments.  It searches <expC2> for the first occurrence of <expC1>, and then returns, as an integer, the position where it was found.  If <expC1> does not occur in <expC2>, zero is returned.
  673. See also:        LEFT( ), RIGHT( ), SUBSTR( )
  674. AVERAGE  
  675.    Average numeric expressions or database fields
  676. Format:    AVERAGE <expr_list> [<scope>]
  677.         [FOR <expL>] 
  678.         [WHILE <expL>]
  679.         [TO <mem_var_list>]
  680. AVERAGE computes the arithmetic mean of numeric expressions.  All numeric fields in the currently USEd database are averaged unless the <expr_list> specifies otherwise.  All database records are averaged unless a scope, FOR, or WHILE clause is present.  Optionally, the results of the AVERAGE command may be stored to a list of memory variables (<mem_var_list>).
  681. See also: SET HEADING,SET TALK, SUM
  682. Format:    BOF([<expN>] )
  683. The BOF function is used to test for beginning of file condition within a database file. 
  684.  will be returned if you have attempted to move the record pointer before the first logical record in the database file.
  685. BOF supports an optional argument which indicates the workarea to which the function is to be applied.  If no database is open in the indicated workarea, 
  686.  is returned.  If the argument is omitted, the status for the currently selected workarea is returned. 
  687. See also: EOF()
  688. BROWSE 
  689.    Browse the active database in full-screen mode
  690. Format:    BROWSE [LAST] 
  691.         [FIELDS<fieldlist>]
  692.         [HEADINGS<expC>[,<expC>]]
  693.         [NOMODIFY]
  694.         [NOAPPEND]
  695.         [SAVE]
  696.         [AT <expN1>,<expN2>]
  697.         [SIZE <expN1>,<expN2>]
  698.         [NOMENU]
  699.         [FONT <expC>[,<expN>]]
  700. In BROWSE, the screen is a window into your database.
  701. You can save any changes you make and exit BROWSE by closing the BROWSE window. 
  702. Memo and picture fields can be edited in FoxBASE+/Mac BROWSE.  To edit a memo or picture field in BROWSE, double click on the memo or picture field.  To exit the memo or picture field, close the window.
  703. When the LAST clause is specified, the BROWSE window is displayed as it was during the previous BROWSE session for the current database.  This includes the font, window size, window position, fields sizes, window title, fields and field titles.  When BROWSE is issued via the interface, it is automatically generated with the LAST clause.  To reinitilize the BROWSE window, simply issue BROWSE without a LAST clause from either the command window or a program.  
  704. If the FIELDS clause is present, then only the database fields mentioned in <list> are displayed.  These fields are displayed in the order specified in the <list>.  Otherwise, all fields in the database are displayed in the order they appear in the database structure.
  705. The HEADINGS option allows you to change the default window title and the field headings that are displayed at the top of the BROWSE window, as well as the width of the field columns that the data will be displayed in.
  706. The first <expC> is a character string or expression that will replace the default title of the BROWSE window. The name of the database is displayed at the top of the window if this option is not used.
  707. The second <expC> is a character string or expression that specifies field titles and column widths for the browse fields in the following fashion:
  708. 1. Information for each field is separated by semi-colons:
  709.      "Field 1;Field 2;;Field 4"
  710. 2. Column width information is separated from field title information with a colon:
  711.      "Last Name:20;First Name:20;Middle Initial;:10"
  712. In the example above, the first field will have the title Last Name and will be displayed in a column that's 20 characters wide; the next field will have the title First Name and it, too, will be 20 characters wide; the Middle Initial field will be displayed with just the title changed (no change to the width); and the fourth field in the window will be displayed in a 10 character column using the field name from the data<->base structure.  Fields in the Browse window that go beyond those listed in the <expC> are displayed in the default format, using their database field names and the width from the database structure.
  713. The NOMODIFY option inhibits all modifications to the database(s). This is intended to support developers who wish to offer the convenience of BROWSE to view databases but do not want users to modify the database.
  714. The NOAPPEND option prohibits users from adding records to a database through the BROWSE window.  The Append Blank option in the BROWSE menu, and its associated keyboard shortcut (Command-M), are disabled.  Attempting to append a record using the shortcut will cause FoxBASE+/Mac to beep.
  715. The SAVE option is for use in program mode only.  When in program mode, if the SAVE option is not specified, the BROWSE window will close when the mouse is clicked outside the BROWSE window.  If you want the BROWSE window to remain when another window or screen is brought forward, the SAVE option must be specified.  This option is ignored if specified in interactive mode.
  716. When the AT clause is used, the BROWSE window's upper left-hand corner is located AT the vertical and horizontal coordinates specified by <expN1>,<expN2>.  These coordinates are always expressed in pixels.
  717. The AT clause also supports automatic centering of the BROWSE window.  If both <expN1> and <expN2> are given values of zero (0), the window will be centered in the monitor.
  718. The SIZE clause controls the size and shape of the BROWSE window that's displayed.  <expN1> is the height and <expN2> is the length.  These values are always expressed in pixels.
  719. The NOMENU clause prevents the BROWSE menu from being displayed with the BROWSE window.
  720. The FONT clause specifies the font <expC> and/or size <expN> that the data and headings will be displayed in.
  721. The FONT name <expC> must be enclosed in character string delimiters, and the point size <expN> must be separated from the font name with a comma.  The font name or the point size alone may be specified.  If the font name is omitted, the comma before the size is still required.
  722. See also: APPEND, EDIT
  723. CALL - Call a loaded resource
  724. Format: CALL <resname> [TO <mem_var>] [WITH <expr_list>]
  725. The CALL command works in conjunction with the LOAD command and allows you to run customized routines directly from memory.  The LOAD command places the <resname> resource in memory, and the CALL command executes the resource code.
  726. The optional TO clause allows you to place the result returned from the resource into the named <mem_var>.
  727. The optional WITH clause allows you to pass parameter values to the named resource.
  728.   Example 
  729. You have a resource file called XCMDFile that has 4 XCMD resources in it, one of them named "Music."  The following FoxBASE+/Mac program segment would LOAD that resource into memory, CALL the loaded resource (passing the parameter values "Jazz" and 5 to the XCMD), store the value returned by the resource in the variable named result and RELEASE the resource MODULE.
  730.  SET RESOURCE TO "XCMDFile"
  731.  LOAD "Music"
  732.  CALL "Music" TO result WITH "Jazz",5
  733.  RELEASE MODULE "Music"
  734. @WARNING = N OTE : When passing filenames to an XCMD or XFCN, full pathnames are permitted and are  highly recommended .  Since external resource routines know nothing about the current or default folder, using fully qualified pathnames ensures that files are properly found by the external routines.  See the SYS(1033) function for obtaining a full pathname for a file.
  735. See also:  CLEAR MEMORY, LOAD, RELEASE MODULE
  736. CANCEL 
  737.    Cancel execution of a command file
  738. Format:    CANCEL
  739. The CANCEL command aborts execution of a FoxBASE+/Mac command file.  Control is returned to either the interactive mode or to the Finder.
  740. If a program is executing under the Runtime version, FoxBASE+/Mac will terminate and return control to the Finder.  If a program is executing under the Development version of FoxBASE+/Mac, control is returned to interactive mode.
  741. When the CANCEL command is executed, all private memory variables are released.
  742. See also: RETURN, SUSPEND
  743. released.
  744. Format:    CDOW(<expD>)
  745. CDOW, the character day of week function, returns the name of the day which corresponds to <expD>.
  746. The date expression may be the system date function, a memory variable, or a database field.
  747. See also:         DAY( ), DOW( ), SYS( )
  748. CHANGE- Change database records
  749. Format:     CHANGE [LAST]
  750.         [FIELDS <list>]
  751.         [HEADINGS <expC>[,<expC>]]
  752. This command allows you to edit selected fields within the current database.  All fields in the database structure will be available for editing unless a FIELDS <list> is specified, in which case the fields contained in FIELDS <list> will be displayed on the screen for modification.  These fields are displayed in the order specified in the <list>.  All records will be made available for editing unless a FILTER or a filtered INDEX is set.  The CHANGE and EDIT commands function identically.
  753. The CHANGE command brings forward an input/editing window.  If a valid format file (.fmt) has been opened in the current work area, the input screen specified by that file appears.  If no format is set, the same default window that appears when you APPEND comes forward-- field names are displayed to the left and the field positions are outlined.
  754. The default Change window has the name of the current database you are editing in the title bar.  This window, like the Browse, has a delete/recall column along the left-most edge that allows you to mark and unmark records for deletion just by clicking.  The area is highlighted when a record is marked. There are also scrolling and window sizing controls that provide complete accessibility to all data in the record and in the database.
  755. If a format is set, the input/edit screen specified by that file comes forward and a Change menu appears on the right end of the menu bar.  (A format is set in the Setup dialog or with the SET FORMAT TO command.)
  756. The options in the Change menu allow you to transfer to the Browse window (see BROWSE for more information), move to the Next record or to the Previous record in the database, move to the Top of the database or to the Bottom of the database.  You can also Append a Blank record to end of the database.
  757. If a format is not set and the default window appears, the Change menu will only contain the Browse and Append Blank options.  The default window has scrolling controls that take the place of the movement options.
  758. If you want to abort any changes in the current field, press the Escape key (or Command-period) or select the Undo option. Note: Only the current changes are discarded.  All previous changes remain.
  759. To exit from Change, close the Change window.
  760. When the LAST clause is specified, the CHANGE window is displayed as it was during the previous CHANGE session for the current database.  This includes the font, window size, window position, fields sizes, window title, fields and field titles.  When CHANGE is issued via the interface, it is automatically generated with the LAST clause.  To reinitilize the CHANGE window, simply issue CHANGE without a LAST clause from either the command window or a program.  
  761. The HEADINGS option allows you to change the default window title at the top of the Change window and the field headings that are displayed to the left, as well as the width of the fields that the data will be displayed in.
  762. The first <expC> is a character string or expression that will replace the default title of the Change window. The name of the database is displayed at the top of the window if this option is not used.
  763. The second <expC> is a character string or expression that specifies field titles and column widths for the input/edit fields.
  764. n the following fashion:
  765. 1. Information for each field is separated by semi-colons:
  766.     "Field 1;Field 2;;Field 4"
  767. 2. Column width information is separated from field title information with a colon:CHR
  768. Format:    CHR(<expN>)
  769. The CHR function evaluates <expN> and returns the single character whose numeric ASCII code is the same as the value of the expression.
  770. See also:         ASC( ), INKEY( )
  771. CLEAR
  772. Formats:    CLEAR
  773.         CLEAR ALL
  774.         CLEAR FIELDS
  775.         CLEAR GETS
  776.         CLEAR MEMORY
  777.         CLEAR PROGRAM
  778.         CLEAR TYPEAHEAD
  779. The CLEAR command without arguments erases the screen and releases all pending GET statements. 
  780. CLEAR ALL releases all memory variables, selects the primary work area (workarea 1) and closes any currently opened database files including associated index, format, and memo files.
  781. CLEAR FIELDS releases the field list that was created by a SET FIELDS TO command.  SET FIELDS OFF is then automatically executed.  Clear fields is distinguished from SET FIELDS TO in that it releases all fields in all work areas, not just in the current work area. 
  782. CLEAR GETS releases all pending GET statements.
  783. CLEAR MEMORY releases all public and private memory variables.
  784. CLEAR PROGRAM clears the compiled program buffer.  This may be required in some unusual situations when the PATH or DEFAULT  is changed.  
  785. CLEAR TYPEAHEAD clears the type-ahead buffer.  This command is especially useful when you wish to ensure that the user views a prompt before input is accepted.
  786. See also: SET TYPEAHEAD TO
  787. going to be executed, a CLEAR PROGRAM must be issued or Test.prg in the folder programs will be executed.  The reason: Test.prg in the folder programs is still in memory and a new version will not be reloaded until the old version is cleared from memory.  
  788. CLEAR TYPEAHEAD clears the type-ahead buffer.  This command is especially useful when you wish to ensure that the user views a prompt before input is accepted.
  789. he old version CLOSE 
  790.    Close various file types
  791. Formats:    CLOSE ALL
  792.         CLOSE ALTERNATE
  793.         CLOSE DATABASES
  794.         CLOSE FORMAT
  795.         CLOSE INDEX
  796.         CLOSE PROCEDURE
  797. CLOSE ALL closes all file types and selects work area 1.  This form of CLOSE does not affect memory.
  798. CLOSE ALTERNATE closes an open alternate file.
  799. CLOSE DATABASES closes all open database, index and format files and selects work area 1.
  800. CLOSE FORMAT closes an open format file that is within the current work area.
  801. CLOSE INDEX closes all open index files open within the current work area.
  802. CLOSE PROCEDURE closes an open procedure file.
  803. CMONTH
  804. Format:    CMONTH(<expD>)
  805. CMONTH, the character month function, returns the name of the month which corresponds to <expD>.
  806. The date expression may be the system date function, a memory variable, or a database field.
  807. See also:  MONTH(), SYS()
  808. Format:    COL([1])
  809. The COL function returns the current column position of the cursor.  If the optional argument 1 is specified, the column postion is expressed in pixels.
  810. The COL function is especially useful for relative screen addressing within a program.
  811. See also:         @, PCOL( ), PROW( ), ROW( )
  812. CONTINUE 
  813.    Continue LOCATEing records in a loop
  814. Format:    CONTINUE
  815. This command is used in conjunction with the LOCATE command to continue LOCATE's operation, skipping to the next record which matches the criteria specified in the LOCATE command.
  816. The process of CONTINUEing can be repeated until the end of the file is encountered, or until the end of the LOCATE <scope> is reached.
  817. See also:        LOCATE, EOF( ), FOUND( )
  818. COPY FILE 
  819.    Copy any type of file
  820. Formats:    COPY FILE <file1> TO <file2>
  821. This form of COPY creates an exact duplicate of <file1> including the file type.  <file1> may be of any type.  You may not use this form of COPY with an open file.  There is no default extension, so the extension (if any) must be specified for both <file1> and <file2>. 
  822. ip:  If you use the COPY FILE command to create a backup of a database file that has an associated dbt file, remember to copy the dbt file also.
  823. COPY STRUCTURE  
  824.    Copy database structure only to another database
  825. Format:    COPY STRUCTURE TO <file>
  826.         [FIELDS <fieldlist>]
  827. This variant of COPY creates an empty database named <file> with the same structure as the currently USEd database.
  828. COPY STRUCTURE supports an optional FIELDS list.  This form allows only the named fields to be eligible for insertion into the new <file>.  Also fields from unselected databases may be included in the fields list when referenced with the ALIAS database name.  This allows a new database to be created that is a combination of several databases.
  829. See also:        DISPLAY STRUCTURE, SET SAFETY
  830. COPY  STRUCTURE EXTENDED 
  831.    Copy database structure to records in another database
  832. Format:    COPY TO <file> STRUCTURE EXTENDED
  833. The structure of the database USEd is copied into database records in <file>.  These records can then be edited as desired.  In this case, the TO <file>'s structure is fixed in format and consists of:
  834.     FIELD_NAME
  835.     FIELD_TYPE
  836.     FIELD_LEN
  837.     FIELD_DEC
  838. The values in the records of the TO database are determined by the structure of the currently USEd database.  After any desired modifications are made (perhaps by use of EDIT, REPLACE or BROWSE) the resulting database may then be used to create a new database file using the CREATE FROM command. 
  839. See also:        CREATE FROM
  840.  COPY TO
  841.  Copy data from open databases to a file
  842.  Format:   COPY TO <file> [<scope>]
  843.         [FIELDS <fieldlist>]
  844.         [FOR <expL>]
  845.         [WHILE <expL>]
  846.         [TYPE SDF|DELIMITED [WITH <char>|BLANK|TAB]]
  847. In this variation of the COPY command, records from the active database are copied to <file>.  If no extension is specified for <file>, "DBF" is assumed.
  848.  FIELDS <fieldlist>
  849. COPY supports an optional FIELDS list.  This form allows only the named fields to be eligible for COPYing.  Also fields from unselected databases may be included in the fields list when referenced with the ALIAS database name.
  850.  FOR <expL> and  WHILE<expL>
  851. If the FOR <expL> clause is included, only those records for which <expL> is true will be copied.  If the WHILE <expL> clause is present, records will only be copied as long as <expL> is true.  <expL> should normally reference fields which are contained in the active database.
  852. TYPE <file_type>
  853. This clause must be used when the <file>> to be created is not a FoxBASE+/Mac database.  The TYPE clause may be used to specify other file types.  The available file types are DELIMITED and SDF.
  854. DELIMITED[WITH<char>|BLANK|TAB]
  855. A DELIMITED file is an ASCII text file in which each record ends with a carriage return and line feed.  Fields are normally separated by commas, and character fields are additionally delimited by double quotation marks.  For example:
  856. "555", 9999999, "TELEPHONE
  857. However, the DELIMITED WITH BLANK or TAB options may be used to specify files which are to contain fields separated by one space or one tab rather than by commas.
  858. The DELIMITED WITH <char> option may be used to indicate that character fields are to be delimited by a character other than a double quotation mark. 
  859. SDF files are ASCII text files in which records and fields within records have a fixed length and end with a carriage return and line feed.
  860. The filename extension is assumed to be ".txt" for DELIMITED and SDF format files.  If you want the <file> to have a different extension, the extension must be specified.
  861.  @WARNING = TIP:  Use the MODIFY FILE command to examine Vidtxt.txt, Vidtxt2.txt, Vidtxt3.txt and Vidtxt4.txt.  Examining the files with a text editor should make it clear the differences in the DELIMITED and SDF file formats.
  862. See also:  APPEND FROM, COPY FILE, COPY STRUCTURE, SET DELETED, SET SAFETY
  863. vely.  The fifth example copies to a file DELIMITED with commas and the sixth with ">>".  In the last example, Vidtxt5.txt is an SDF file.
  864. @WARNING = TIP:  Use the MODIFY FILE command to examine Vidtxt.txt, VCOUNT 
  865.    Count database records
  866. Format:    COUNT [<scope>] 
  867.         [WHILE <expL>] 
  868.         [FOR <expL>]
  869.         [TO <mem_var>]
  870. This command counts the records within <scope> for which the WHILE/FOR <expL> is true.  If TALK is set on, it will display this count in the form:
  871.     nnnnnn records
  872. If the TO clause is specified, the number counted is placed in <mem_var>.  <mem_var> will be created if it has not already been defined.  Records marked for deletion are counted if DELETE is SET to OFF.  The default scope is ALL.  If the FOR and WHILE clauses are not specified, all records in <scope> are counted.
  873. See also: SET DELETED
  874.  CREATE- Create a database structure
  875.  Format: CREATE [<file>]
  876. This variation of the CREATE commands builds a new FoxBASE+/Mac database file using the Modify Structure dialog.  If <file> is not specified in the command, the Directory dialog with text box comes forward.  Simply type the name of the file to be created into the text box and press return.  The Modify Structure dialog comes forward.
  877. In this dialog, you define the fields that will be in the database.  For each field you wish to create, you should:
  878.  Enter a field name (up to 10 characters) into the Name box.
  879.  Select a data type (Character, Numeric, Date, Logical, Memo, or Picture) by clicking the Type popup and dragging.
  880.  For character data you will need to enter a field width (up to a maximum of 254).  The default width is 10.
  881.  For numeric data you will need to enter a field width (up to a maximum of 16--the default width is 8) and, optionally, the number of decimal positions (no more than the width minus one--the default is 0).
  882.  Field widths and decimal places are set or changed by either clicking on the arrows or by directly editing the fields themselves.
  883.  Date, Logical, Memo, and Picture data types have preset field widths which cannot be changed.
  884. You save the structure by clicking OK.  If the file name was not specified when the CREATE command was issued, FoxBASE+/Mac then presents a directory dialog box in which you name the new file.
  885. After the new database file is created, FoxBASE+/Mac asks:
  886.     "Input data records now?"
  887. Answering No returns you to the interactive command system.  Answering Yes is the same as issuing the APPEND command.
  888. See also:  MODIFY STRUCTURE
  889. CREATE  FROM  
  890.    Create database from COPY STRUCTURE EXTENDED file
  891. Format:    CREATE [<file1>] FROM [<file2>]
  892. This variant of CREATE assumes that <file2> has been created either manually or with the COPY STRUCTURE EXTENDED command, and that this database file has been edited as desired.  <file1> is then created with the structure described in <file2>.  The newly created database becomes the currently USEd database.
  893. See also:        COPY STRUCTURE EXTENDED
  894.  CREATE LABEL- Create a label file with the FoxReport design facility
  895.  Format:  CREATE LABEL [<file>]
  896. When you issue the CREATE LABEL command, the report writer -- FoxReport --comes forward, with the layout screen automatically structured to allow you to design label output.
  897. If a <file> is specified in the command, the layout window will have that name in the title bar and will be saved under that name automatically.  If a <file> is not specified in the command, an "Untitled.frx" layout screen will be presented.
  898. Complete instructions for designing a Label file with FoxReport can be found in the FoxReport - FoxForm - FoxCode manual.  And, there is also a chapter in the FoxBASE+/Mac Tutorial that deals with the subject.  For information on printing labels, see the LABEL command.
  899.  See also: LABEL, MODIFY LABEL
  900.  CREATE REPORT - Create report format file with the FoxReport design facility
  901.  Format:  CREATE REPORT [<file>]
  902. When you issue the CREATE REPORT command, you invoke FoxReport, the FoxBASE+/Mac report design facility.  With FoxReport you can design custom report forms that meet your specific needs.
  903. If a <file> is specified in the command, the layout window will have that name in the title bar and will be saved under that name automatically.  If a <file> is not specified in the command, an "Untitled.frx" layout screen will be presented. 
  904. Complete instructions on the operation of FoxReport can be found in the FoxReport - FoxForm - FoxCode manual.  And, there is also a chapter in the FoxBASE+/Mac Tutorial that deals with the subject.  For information on printing a report, see the REPORT command.
  905. See also: MODIFY REPORT, REPORT
  906. CREATE VIEW 
  907.    Create a view file from the environment
  908. Format:    CREATE VIEW [<viewfile>]
  909. This variant of CREATE builds a new FoxBASE+/Mac view file containing information about the FoxBASE+/Mac environment.  The information saved in the view file includes:
  910.   All database, index, alternate and format files currently open in all ten workareas.
  911.   All fields contained in the SET FIELDS list.
  912.   All established relations between open database files.
  913.   All filters in effect for open databases.
  914.   All ON/OFF switch settings.
  915.   The current function key settings.
  916.   ON ESCAPE and ON KEY settings.
  917.   The DEFAULT and PATH settings.
  918.   The current color mappings.
  919.   The procedure file setting.
  920. View files are useful both in programs and while debugging.  Only one command, SET VIEW TO <viewfile>, needs to be executed to establish the entire environment needed to complete a task. This can save lots of typing and/or mousing.  While debugging, the environment settings can be saved to a view file, testing can be done, and the environment can be reset to continue progam execution.
  921. See also:        SET VIEW TO and SET VIEW ON/OFF
  922.  ON/OFF
  923. Format:    CTOD(<expC>)
  924. CTOD, the character to date function, returns the date value which corresponds to <expC>.
  925. The format of <expC> defaults to 
  926. mm/dd/yy
  927. .  SET DATE and SET CENTURY commands may be used to change this default format.
  928. If the century is not specified when entering a date (as in the string expression 
  929. 12/25/85
  930. ), then the twentieth century is assumed.
  931. <expC> must contain a valid date from 
  932. 1/1/100
  933. 12/31/9999.
  934. See also:  SET CENTURY, SET DATE, DTOC(), SYS()
  935. Format:    DATE( )
  936. The current system date is returned as the value of DATE.
  937. The DATE format may be modified using the SET DATE command.
  938. See also:  SET DATE, SET CENTURY, SYS()
  939. Format:    DAY(<expD>)
  940. DAY, the day of month function, returns the numeric day of the month corresponding  to <expD>.
  941. The date expression may be the system date function, a memory variable, or a database field.
  942. See also:  CDOW(), DOW(), SYS()
  943. Format:    DBF([<expN>] )
  944. The DBF function returns the name of the database that is open in the specified workarea.
  945. DBF supports an optional argument which indicates the workarea to which the function is to be applied.  If no database is open in the indicated workarea, the null string is returned.  If the argument is omitted, the value for the currently selected workarea is returned.
  946. See also:   FIELD(), NDX(), SYS(7)
  947. DELETE FILE - Delete a database file
  948. Format:    DELETE FILE <file>
  949. This form of the DELETE command erases <file>.
  950. The file to be deleted cannot be in USE at the time the DELETE command is issued.
  951. <file> must be a fully-qualified pathname:
  952.  the filename extension must be included
  953.  if <file> is on a drive or in a different directory than than the default drive and directory, the drive designator and/or the directory name must also be specified.
  954. See also: ERASE, PACK, RECALL, DELETED(), SET DELETED
  955. DELETE - Delete records from active database
  956. Formats:    DELETE [<scope>] 
  957.         [FOR <expL>] 
  958.         [WHILE <expL>]
  959. This form of the DELETE command marks records for deletion in the currently active database.  If the WHILE clause is present, deletion continues as long as <expr> is true.  If <scope> is missing, the default scope used is the current record only.  If the FOR clause is missing, all records in <scope> are marked for deletion.  Records marked for deletion are not physically removed until a PACK operation takes place. Records marked for deletion may be RECALLed using the RECALL command.
  960. See also:        PACK, RECALL, DELETED( ), SET DELETED
  961. DELETED
  962. Format:    DELETED([<expN>])
  963. The DELETED function returns a logical value.  It returns the value 
  964.  if the current record has been marked for deletion, and 
  965.  if it has not.
  966. DELETED supports an optional argument which indicates the workarea to which the function is to be applied.  If no database is open in the indicated workarea, 
  967.  is returned.  If the argument is omitted, the status for the currently selected workarea is returned.
  968. See also:  SET DELETED
  969.  DIMENSION- Allocate an array of memory variables
  970.  Format: DIMENSION <mem_var> (<expN1> [,<expN2>]) [,<mem_var> (<expN1>[, <expN2>]),...]
  971. One or two dimensional arrays of the DIMENSION statement.  Each such array uses 1 memory variable and is limited in size to a maximum of 32,767 elements.  Each array element takes 18 bytes of storage plus space to store the values of any character-string variables.  That is, for a 2 by 3 array, 1 variable location is required for the array descriptor and 108 bytes for the array itself.
  972. Subscripts in a memory variable array start with 1.
  973. The elements of a memory variable array may contain any type of data.  The type of data contained in a particular element is determined by the last STORE made to that variable.  An array element defaults to a logical variable containing a ".F." value.  An entire memory variable array may be initialized by using the STORE command.
  974. If an array is DIMENSIONed with two subscripts, it can also be accessed with a single subscript.  To determine which single subscript corresponds to a pair of subscripts, note that the elements are stored in row-significant order. In the following example, x(2,2) and x(5) refer to the same element in the array.
  975. The commands SCATTER and GATHER provide an efficient mechanism for transferring data between database records and arrays.
  976.  See also: GATHER, PUBLIC, SCATTER, STORE
  977. DIR or DIRECTORY - Display disk directory listing
  978. Format:    DIR/DIRECTORY [<drive>] 
  979.         [<path>] 
  980.         [<skel>] 
  981.         [TO PRINT] 
  982. The DIR command displays database files, number of records in each file, date the file was last updated, and the size of each file in bytes.  (Databases in the FoxBASE/dBASE II format are noted as such.) The number of files displayed and the total number of bytes remaining on the disk are also displayed.  The file information on the default drive is displayed unless otherwise specified using the <drive:> and/or <path> arguments.
  983. To display information about file types other than .DBF, specify the 
  984. <skel> option. 
  985. This file listing may also be routed to the printer with the TO PRINT option.
  986. See also:  SET PATH, SET DEFAULT
  987. DISKSPACE
  988. Format:    DISKSPACE( )
  989. The DISKSPACE function returns the number of bytes currently available on the default drive.
  990. The DISKSPACE function is useful when determining if sufficient space is available for backups or to execute commands, such as SORT, which requires substantial space for disk work files.
  991. DISPLAY FILES  
  992.    Display statistics about files on disk
  993. Format:    DISPLAY FILES 
  994.         [ON <drive|folder>] 
  995.         [LIKE <skel>] 
  996.         [TO PRINT]
  997. This variant of DISPLAY is used to list files on disk.  You may view all files on a specified disk drive or folder, or only files which match a <skel> pattern containing file 
  998. wild-cards
  999.  characters. 
  1000. DISPLAY FILES without arguments displays the vital statistics of database files stored in the default folder or disk.  The data displayed is:
  1001.   database name
  1002.   the number of records
  1003.   the date and time of the last update
  1004. Display will pause and wait for keyboard input when the output screen is full.  A message waiting
  1005.  will be displayed in the upper right hand corner of the screen when display is paused.
  1006. The TO PRINT option directs screen display to the printer.
  1007. See also: DIRECTORY
  1008. j6&BN
  1009. j,&BN
  1010. /<NBPC?<
  1011. k0aDg,t
  1012. J2 6W
  1013. f JDISPLAY MEMORY 
  1014.    Display the contents of memory variables
  1015. Fomat:    DISPLAY MEMORY [TO PRINT]
  1016. This DISPLAY option shows the name, type, contents, and status of all memory variables currently defined.  It also displays the number of memory variables defined, the number of bytes used, the number of additional memory variables possible and the number of bytes available for additional memory variables.
  1017. The default maximums for memory variables are as follows:
  1018.   256 memory variables
  1019.   6000 bytes of string memory variables
  1020. If desired, these limits may be increased in your config.fx file.  To allocate more space for storage of string variables, increase mvarsize.  To specify a larger number of memory variables, increase mvcount.  For more information concerning the config.fx file refer to the chapter on 
  1021. Customizing
  1022.  in the User's Guide.
  1023. Display will pause and wait for keyboard input when the output screen is full.  A message waiting
  1024.  will be displayed in the upper right hand corner of the screen when display is paused.
  1025. The TO PRINT option may be specified to direct screen display to the printer.
  1026. DISPLAY STATUS 
  1027.    Display the status of the FoxBASE+/Mac environment
  1028. Format:    DISPLAY STATUS [TO PRINT]
  1029. This form of the DISPLAY command is used to list the following information:
  1030.   Procedure file in use
  1031.   Currently Active Databases
  1032.   Currently Active Indexes
  1033.   Index File Keys
  1034.   Alias Information
  1035.   Database Relations
  1036.   Currently Active Memo Files
  1037.   File Search Path
  1038.   Default Disk Drive
  1039.   Print Destination
  1040.   Margin Setting
  1041.   Decimals Setting
  1042.   Memowidth Setting
  1043.   Typeahead Setting
  1044.   History Setting
  1045.   Date Format Setting
  1046.   On Key and On Escape Assignments
  1047.   SET Command Switch Settings
  1048.   Function Key Assignments
  1049. Display will pause and wait for keyboard input when the output screen is full.  A message waiting
  1050.  will be displayed in the upper right hand corner of the screen when display is paused.  
  1051. The TO PRINT option may be specified to direct screen display to the printer.
  1052. See also: LIST STATUS
  1053. DISPLAY STRUCTURE 
  1054.    Display the structure of the active database
  1055. Format:    DISPLAY STRUCTURE [TO PRINT]
  1056. This DISPLAY option shows the structure of the active database.  This is helpful in recalling names, sizes, decimals, etc. of the fields in a database during interactive sessions.  Also displayed is the current number of records in the database and the date it was last updated.
  1057. Display will pause and wait for keyboard input when the output screen is full.  A message waiting
  1058.  will be displayed in the upper right hand corner of the screen when display is paused.  
  1059. The TO PRINT option may be specified to direct screen display to the printer.
  1060. See also: LIST STRUCTURE
  1061. DISPLAY 
  1062.    Display database records or expressions
  1063. Format:    DISPLAY [<scope>] 
  1064.         [[FIELDS] <expr_list>] [FOR <expL>]
  1065.         [WHILE <expL>] [OFF] [TO PRINT]
  1066. This variant of the DISPLAY command is normally used to display the contents of the active database file.  It can also be used to display the results of expressions which may consist of literals, memory variables, database fields, and memo fields. 
  1067. For each record in <scope>, the expressions in <expr_list> are evaluated and their values are displayed on the screen.  Here are some points to note:
  1068.  The default <scope> is NEXT 1.  
  1069.  If the FOR clause is present, <expr_list> is displayed only for records where <expL> is true.  
  1070.  If the WHILE clause is present, display continues as long as <expL> remains true.  
  1071.  If both FOR and WHILE clauses are omitted, then DISPLAY is applied to all records within <scope>.  
  1072.  Memo and picture field contents will not be displayed unless explicitly specified in <expr_list>.
  1073. Unless the OFF option is specified, the current record number is prefixed to each line displayed.
  1074. Display will pause and wait for keyboard input when the output screen is full.  A message waiting
  1075.  will be displayed in the upper right hand corner of the screen when display is paused.
  1076. The TO PRINT option may be specified to direct screen display to the printer.
  1077. DO CASE 
  1078.    Execute statements based on several conditions
  1079. Format:    DO CASE
  1080.         CASE <expL1>
  1081.             <statements>
  1082.         CASE <expL2>
  1083.             <statements>
  1084.         ...
  1085.         CASE <expLn>
  1086.             <statements>
  1087.         [OTHERWISE
  1088.             <statements>]
  1089.         ENDCASE
  1090. When the DO CASE command is executed, successive CASE statements are examined and their <expL> expressions evaluated.
  1091. If <expL> proves to be false, succeeding statements up to the next CASE statement are skipped and not executed.
  1092. When the first CASE statement is encountered for which <expL> is true, the commands following it are executed.  Execution of these statements continues until the next CASE statement is reached.  FoxBASE+/Mac then skips to the ENDCASE statement matching the DO CASE statement, and execution resumes with the first command following ENDCASE.
  1093. One and only one CASE will be executed:  the first one whose <expL> is true 
  1094.    no matter how many other CASE statements have a true <expL>.
  1095. If no CASE is encountered with true <expL>, then what happens depends on whether or not an OTHERWISE statement is present:
  1096.   If an OTHERWISE statement has been included, statements between it and the ENDCASE statement are executed; execution continues with the first command following the ENDCASE statement.
  1097.   If no OTHERWISE statement has been provided, no statements within the DO CASE statement and the ENDCASE statement are executed.
  1098. See also:        DO WHILE, IF, DO
  1099. DO WHILE  
  1100.    Loop while a condition is True
  1101. Format:    DO WHILE <expL>
  1102.             <statements>
  1103.         [LOOP]
  1104.             <statements>]
  1105.         [EXIT]
  1106.         ENDDO
  1107. In this structured programming command, <expL> is evaluated.  While <expL> remains true, the statements between the DO WHILE statement and the matching ENDDO statement will be executed.
  1108.   Each DO WHILE must have a matching ENDDO statement.
  1109.   Comments on the same line as the ENDDO are ignored.
  1110. EXIT is a statement which transfers control from within a DO WHILE loop to the first command following the ENDDO.  The EXIT command may be placed anywhere between the DO WHILE and ENDDO statements.
  1111. LOOP is a statement which may be placed anywhere between the DO WHILE and ENDDO statements.  Executing the LOOP statement causes control to return directly back to the DO WHILE command.
  1112.    Execute a command procedure file
  1113. Format:    DO <file> [WITH <parm_list>]
  1114. In this form of the DO command, <file> is a command file or procedure file containing FoxBASE+/Mac commands.  A command file is created in the FoxBASE+/Mac editor and has a prg extension by default.  
  1115. <file> may itself contain additional DO commands;  however, such nesting of DOs is limited to a depth of 24.  Command files may also contain structured programming statements such as DO WHILE loops and CASE statements.
  1116. When <file> is DOne, commands contained in it are executed in the order they are encountered.  Command files will continue to execute until one of the following occurs:
  1117.   a RETURN command is executed,
  1118.   a CANCEL command is executed,
  1119.   a QUIT command is executed,
  1120.   the end of the command file is reached.
  1121. When <file>'s execution is completed, control is returned to the calling program, the Command window, or the Finder.
  1122. The WITH clause allows you to pass parameters to the procedure file. Parameters may be any valid expression.  An alias must be used if you wish to specify a database field rather than a memory variable of the same name.
  1123. See also:        PRIVATE, PROCEDURE, PUBLIC, SET PROCEDURE, DO CASE, DO WHILE, IF/ELSE/ENDIF
  1124. Format:    DOW(<expD>)
  1125. DOW, the day of week function, returns the numeric day of the week corresponding to <expD>.  This is a number from 1 (for Sunday) to 7 (for Saturday).
  1126. See also:  CDOW(), DAY(), SYS()
  1127. Format:    DTOC(<expD>[,<1>])
  1128. DTOC, the date to character function, returns a character string containing the date corresponding to <expD>.   The format in which the date is presented is controlled by the current SET DATE option in effect.
  1129. The date expression may be the system date function, a memory variable, or a database field.
  1130. The optional argument causes the date to be returned in a form suitable for direct use in INDEXing.
  1131. See also:  CTOD(), SET CENTURY, SYS()
  1132. EDIT- Edit database records
  1133.  Format:   EDIT [LAST]
  1134.         [FIELDS <list>]
  1135.         [HEADINGS <expC>[,<expC>]]
  1136. This command allows you to edit selected fields within the current database.  All fields in the database structure will be available for editing unless a FIELDS <list> is specified, in which case the fields contained in FIELDS <list> will be displayed on the screen for modification.  These fields are displayed in the order specified in the <list>.  All records will be made available for editing unless a FILTER or a filtered INDEX is set.  TheEDIT and CHANGE commands function identically.
  1137. The EDIT command brings forward an input/editing window.  If a valid format file (.fmt) has been opened in the current work area, the input screen specified by that file appears.  If no format is set, the same default window that appears when you APPEND comes forward-- field names are displayed to the left and the field positions are outlined.
  1138. The default Edit window has the name of the current database you are editing in the title bar.  This window, like the Browse, has a delete/recall column along the left-most edge that allows you to mark and unmark records for deletion just by clicking.  The area is highlighted when a record is marked.  There are also scrolling and window sizing controls that provide complete accessibility to all data in the record and in the database.
  1139. If a format is set, the input/edit screen specified by that file comes forward and a Change menu appears on the right end of the menu bar.  (A format is set in the Setup dialog or with the SET FORMAT TO command.)
  1140. The options in the Change menu allow you to transfer to the Browse window (see BROWSE for more information), move to the Next record or to the Previous record in the database, move to the Top of the database or to the Bottom of the database.  You can also Append a Blank record to end of the database.
  1141. If a format is not set and the default window appears, the Change menu will only contain the Browse and Append Blank options.  The default window has scrolling controls that take the place of the movement options.
  1142. If you want to abort any changes in the current field, press the Escape key (or Command-period) or select the Undo option.  Note: Only the current changes are discarded.  All previous changes remain.
  1143. To exit from Edit, close the Edit window.
  1144. When the LAST clause is specified, the EDIT window is displayed as it was during the previous EDIT session for the current database.  This includes the font, window size, window position, fields sizes, window title, fields and field titles.  When BROWSE is issued via the interface, it is automatically generated with the LAST clause.  To reinitilize the EDIT window, simply issue EDIT without a LAST clause from either the command window or a program.  
  1145. The HEADINGS option allows you to change the default window title at the top of the Edit window and the field headings that are displayed to the left, as well as the width of the fields that the data will be displayed in.
  1146. The first <expC> is a character string or expression that will replace the default title of the Edit window. The name of the database is displayed at the top of the window if this option is not used.
  1147. The second <expC> is a character string or expression that specifies field titles and column widths for the input/edit fields. 
  1148. ; the Middle Initial field will be displayed with just the title changed (no change to the width); and the fourth field in the window will be displayed in a 10 character column using the field name from the data<->base sEJECT - Eject the printer to top of next page
  1149. Format:    EJECT
  1150. The EJECT command sends a form feed to the printer.
  1151. EJECT resets the PCOL( ) and PROW( ) functions.
  1152. See also: SET DEVICE, SET PRINT,PCOL(), PROW()
  1153. Format:    EOF([<expN>])
  1154. The EOF function returns the logical value 
  1155.  if the last record in the  database has been passed or if the preceding SEEK or FIND was unsuccessful; that is, if end-of-file has been reached.  EOF returns the logical value 
  1156.  if end-of-file has not been reached.
  1157. EOF supports an optional argument which indicates the workarea to which the function is to be applied.  If no database is open in the indicated workarea, 
  1158.  is returned.  If the argument is omitted, the status for the currently selected workarea is returned.
  1159. See also:  BOF()
  1160. ERASE 
  1161.    Erase a file from disk
  1162. Format:    ERASE <file>
  1163. The ERASE command deletes a file from disk. <file> must be a fully-qualified pathname:
  1164.   the filename extension must be included, and
  1165.   if <file> is on a drive or in a different folder than than the default drive or folder, the drive designator and/or the folder name must also be specified.
  1166. The DELETE FILE command may also be used to delete a file from disk.
  1167. See also: DELETE FILE
  1168. ERROR
  1169. Format:    ERROR( )
  1170. The ERROR function returns the number of the error which caused an ON ERROR condition.  ON ERROR must be active for the ERROR function to return a value other than 0.
  1171. When an error is trapped during program execution, the type of error can be identified with ERROR( ) within an error handling routine designated in the ON ERROR statement.  Corrective measures (e.g., deleting files) may then be taken before proceeding with the program.
  1172. For complete information on error numbers, see Chapter 8 and Appendix C of the User's Guide.
  1173. See also:  MESSAGE(), ON ERROR, RETRY, RETURN
  1174. EXIT 
  1175.    Exit a DO WHILE loop
  1176. Format:    EXIT
  1177. The EXIT command transfers control from within a DO WHILE 
  1178.  ENDDO loop to the command following the ENDDO.
  1179. See also:        DO WHILE
  1180. Format:    EXP(<expN>)
  1181. The EXP function returns the value of e^x.  The value of <expN> is the exponent, x, in the exponential equation e^x.
  1182. See also:          SET DECIMALS
  1183. FCOUNT
  1184. Format:    FCOUNT([<expN>])
  1185. The FCOUNT function returns the number of fields in an open database.
  1186. FCOUNT supports an optional numeric argument which indicates the workarea to which the function is to be applied.  If no database is open in the indicated workarea, 0 is returned.
  1187. See also:  DBF(), NDX(), SYS(7)
  1188. FIELD
  1189. Format:    FIELD(<expN1>[,<expN2>])
  1190. The FIELD function returns the name of the field in the currently active database which corresponds to the numeric position specified by <expN1>.
  1191. The null string will be returned if <expN1> refers to a field number outside of the range of fields in the currently active database.
  1192. Field names will be returned in uppercase.
  1193. FIELD supports an optional second argument which indicates the workarea to which the function is to be applied.  If no database is open in the indicated workarea, the null string is returned.  If the second argument is omitted, the value for the currently selected workarea is returned.
  1194. Format:    FILE(<file>)
  1195. This function returns the logical value 
  1196.  if the character expression <file> is the name of an existing file.  It returns 
  1197.  if no such file exists.
  1198. Any extensions in <file> must be explicitly specified. 
  1199. Alternately, a fully qualified pathname may be specified to search for a file in a directory other than the current working directory.
  1200. The expression <file> may be a string literal delimited by quotation marks, the value of a character-valued memory variable, or a character expression.
  1201. If <file> is a string literal, the quotation marks are mandatory.
  1202. FIND 
  1203.    Find a database record
  1204. Format:    FIND <char_str>|<n>
  1205. The FIND command requires that the currently USEd database be indexed and that an index be enabled. It moves the record pointer to the first record in the database whose index key matches <char_str> or <n>.
  1206. If a match is found, RECNO() returns the matched record, FOUND() is .T., and EOF() is .F..  If a match is not found, RECNO() returns the number of records in the database plus one, FOUND() is .F., and EOF() is .T..  If a match is not found, RECNO() with an argument of 0, RECNO(0), returns the record number of the nearest matched record higher than the search key.
  1207. The match must be an exact match unless SET EXACT is set to OFF.  
  1208. If the key in the index has leading blanks, the character string must be enclosed within quotation marks.
  1209. If you wish to search for the contents of a character memory variable, the macro function (&) must precede the memory variable.
  1210. The SEEK command behaves exactly like FIND except it can have as its argument an expression.  This allows for more flexibiltiy and SEEK executes faster since a macro does not have to be evaluated.  If the memory variable mtitle contains the value AMADEUS, the commands SEEK mtitle and FIND &mtitle are equivalent.  In most instances it is best  to use SEEK instead of FIND.  
  1211. See also:        SEEK, LOCATE, FOUND( ), INDEX, RECNO( ), EOF( ), SET EXACT
  1212. FKLABEL
  1213. Format:    FKLABEL(<expN>)
  1214. The FKLABEL function returns the name of the function key which corresponds to <expN>.
  1215. The value of <expN> should be between 1 and FKMAX( ).
  1216. See also:  FKMAX(), SET FUNCTION
  1217. FKMAX
  1218. Format:    FKMAX( )
  1219. The FKMAX function returns the total number of programmable function keys available on your keyboard.
  1220. See also:  FKLABEL(), SET FUNCTION
  1221. FLUSH 
  1222.    Flush buffers to disk
  1223. Format:    FLUSH
  1224. The FLUSH command flushes all active buffers to disk without forcing the user to close all open files.
  1225. See also: CLOSE
  1226. FOUND
  1227. Format:    FOUND([<expN>])
  1228. The FOUND function returns a logical value.  
  1229.  is returned if the last CONTINUE, FIND, LOCATE, or SEEK command was successful.  
  1230.  is returned if the last search command was unsuccessful or the record pointer was moved by a non-search command (ex. GOTO command).
  1231. There is one FOUND( ) value maintained per workarea.
  1232. FOUND supports an optional argument which indicates the workarea to which the function is to be applied.  If no database is open in the indicated workarea, 
  1233.  is returned.  If the argument is omitted, the value for the currently selected workarea is returned.
  1234. This is especially useful when working with related files since it allows values to be obtained without selecting each workarea individually.
  1235. See also:  CONTINUE,EOF(), FIND, LOCATE, SEEK
  1236. FOXCODE - New command to compile a template source file
  1237. Format:        FOXCODE [<filename>]
  1238. This command allows you to compile a FoxCode template source file.  Simply enter FOXCODE <filename> into the command window and press Return.  <filename> is a FoxCode template source file.  If you do not specify <filename> the directory dialog will come forward from which you may choose the FoxCode template source file.  This command is the functional equivalent of choosing the Compile option from the Program menu, clicking the Template radio button and selecting the template file you wish to compile.
  1239. GATHER 
  1240.    Gather array elements to database fields
  1241. Format:    GATHER FROM <array> 
  1242.         [FIELDS <fieldlist>]
  1243. The GATHER command moves data from a memory variable to/from databases> array into the current database record in the SELECTed database.  The elements of the array are transferred, starting with element 1, into the corresponding fields of the record.
  1244. If the array has fewer elements than the database record has fields, fields are modified only up to the point where the array is exhausted.  If the array has more elements than the database has fields, trailing array elements are ignored.
  1245. If the data types of corresponding array elements and record fields don't match, the error, 
  1246. Data type mismatch
  1247.  will be generated.
  1248. MEMO and PICTURE fields are ignored during the operation of GATHER.
  1249. See also:        DIMENSION, SCATTER
  1250. GENERATE - New command to generate an application or format file
  1251. Format:        GENERATE 
  1252.             [FROM[<filename.cod>]|FORM]
  1253.             [WITH[<filename.scx>]
  1254. The GENERATE command allows you to generate an application using the specified template and form file.  You may also want to generate a format file using the built-in format file generator.
  1255. Typing GENERATE with no arguments will bring forward the generate dialog box.
  1256. To generate an application, click the From Template radio button.  If a template has not previously been chosen (the name of the last template used will be listed in the Template text box), you will need to click on Template and select a template file.  Click OK.  Also, if the screen form is still open, its name is listed in the Form text box automatically; otherwise, you will need to click on Form and select a form file.  Click OK.  Depending on the template chosen, you may be asked to name a program file.  A screen will be opened in which you can observe the code being generated.
  1257. Once generated you can run the program by selecting Do from the program menu and selecting the newly created program file.  
  1258. To generate a format file, click the Format File radio button.  The Template button is dimmed.  This happens because the template for generating format files is built-in.  Also, if the screen form is still open, its name is listed in the Form text box automatically; otherwise, you will need to click on Form and select a form file.  Click OK.  You will be asked to name the format file (format files are given an .fmt extension by default). 
  1259. Once generated you can use the format file by bringing forward the Setup dialog Database menu or the View window, checking Format (in the Setup dialog) and selecting the newly created format file.  With this format set, when you change or append records the specified format will be used instead of the default screen.
  1260. You may want to specify additional arguments on the command line.  If you specify FROM  <compiled template filename>, the only dialog that will come forward will be the dialog for selecting a form file.  Specifing FORM, will cause the built-in format file template to be used.  The form file (.scx) to be selected may be specified by the WITH <form file> clause.
  1261. ile> clause.
  1262. GETEXPR - New command to  store an expression to a memory variable
  1263. Format:        GETEXPR [<expC1>] TO <memvar>
  1264.             [TYPE <expC2>[;<expC3>]
  1265.             [DEFAULT <expC4>]
  1266. The GETEXPR command displays the FoxBASE+/Mac expression builder, allowing the user to build an expression.  This command then stores the expression that the user built to <memvar>.
  1267. The optional argument <expC1> will display a prompt above the expression box.  
  1268. TO <memvar> specifies the memory variable where the user-built expression will be stored.  The user-built expression is always a character string.  If the memory variable does not already exist, it will be created.  If the user selects the Cancel option or does not specify an expression in the expression builder, the value of <memvar> will be null.
  1269. The optional argument TYPE <expC2> allows you to specify the type of character expression you would like the user to build and <expC3> the message you would like displayed if the expression is incorrect.  The allowable choices of expression type are:
  1270.     N    Numeric expression
  1271.     D    Date expression
  1272.     C    Character expression
  1273.     L    Logical expression
  1274. <expC2> may contain one or more of the above options.  To specify the error message, simply concatenate <expC2> and ;<expC3> 
  1275. The optional argument DEFAULT <expC4> allows you to specify a default expression to be displayed in the expression box.  
  1276. GETFILE
  1277. Format:    GETFILE([<expC1>][,<expC2>])
  1278. The GETFILE function displays the FoxBASE+/Mac file picker dialog, allowing the user to select a file anywhere on disk.  The name of the selected file is returned as the function's value.
  1279. The optional argument <expC1> is a 4-character code indicating which file type will be displayed in the file picker's file list.  This code, called the file type by Apple, is used by the Finder to categorize files.  If a null argument is passed to the function (i.e., GETFILE()), the directory dialog will display all files in the current folder.  (For a  complete list of the file type codes used by FoxBASE+/Mac and an explanation of All Files option, see Chapter 3.)  If a FoxBASE+/Mac file type is entered verbatim (i.e., F+PR), it must be enclosed in quotation marks since it contains the plus sign - a special character, which will cause FoxBASE+/Mac to treat the data as an expression containing two concatenated variables.
  1280. The optional argument <expC2> is the prompt string that will be displayed along the top of the dialog.
  1281. The name of the file selected by the user is returned as the function's value.  If no file is selected (i.e., the CANCEL button is pressed), the function returns the null string.
  1282. File type codes are used by the Finder (and by FoxBASE+/Mac) to categorize files.  Among other functions, the file type determines which icon the Finder will display on the desktop for the file.  Type codes are assigned to files by the application which creates them.  Examples: XLBN 
  1283.  Excel worksheet,  WDBN 
  1284.  MS Word document,  PICT 
  1285.  MacDraw document, PNGT 
  1286.  MacPaint document, F+DB 
  1287.  FoxBASE+/Mac database, F+PR 
  1288.  FoxBASE+/Mac program, etc.
  1289. You can determine what file types are utilized by a particular application by reading its documentation or using one of many utilities and desk accessories which can display and/or change file types. 
  1290. TOC()
  1291. MONTH()
  1292. TIME()
  1293. YEAR()
  1294. Browse
  1295. Grid Lines
  1296. Object
  1297. Style
  1298.    Position record pointer
  1299. Format:    GO | GOTO  <expN> | TOP | BOTTOM
  1300. The GO/GOTO command positions the record pointer to a specified record within the SELECTed database.
  1301. GO <expN> positions the record pointer for the currently SELECTed database to physical record number <expN>.
  1302. GO TOP|BOTTOM positions the record pointer to the first and last records, respectively, in the SELECTed database.
  1303. If the database has an index in use, then the 
  1304. first
  1305.  record is the record with the lowest key value, and the 
  1306.  record is the record with the highest key value.
  1307. HELP 
  1308.    Display help for functions and commands
  1309. Format:    HELP [<topic>]
  1310. Executing HELP brings forward the FoxBASE+/Mac on-line Help feature.  The main Help window contains an extensive list of commands and keywords, listed alphabetically.
  1311. The Help window is a standard FoxBASE+/Mac window that can be scrolled, moved, sized, and closed.  You can scroll through the list to find the topic you want, or you can type a letter and the pointer moves to the first word beginning with that letter.  To see the Help information for any item, select the one you're interested in and click Help or double-click the highlighted item.
  1312. The Help window then displays the details available for the chosen topic.
  1313. To move directly to details on a specific topic and bypass the topic list, simply type HELP <topic> in the command window.
  1314. If more Help is available than will display on the screen, use the scroll bar to see the rest.
  1315. If you want to return to the main Help screen, and select another topic, click Topics.  If you want to see the Next topic, click Next.  To see the Previous topic, click Previous.
  1316. The Help feature is a complete mini-reference on FoxBASE+/Mac. In fact, Help is a standard FoxBASE+/Mac database (FoxHELP) which you can manipulate like any other FoxBASE+/Mac database 
  1317.    you can display the information, edit it, delete it, copy it, etc.  In fact, your own help database can be substituted for the FoxBASE+/Mac help file.  Simply type SET HELP TO <filename> in the command window or place it in a program.  This offers a convenient and elegant way to implement your own help facilty for use with applications.  For more information on creating your own help facility refer to Chapter 6 in the User's Guide.
  1318. The Help feature can also be called with Command-H, or by typing HELP directly into the command window and pressing Return or Enter.
  1319. See also:        SET HELP TO, SET HELP ON/OFF, SET TOPIC TO
  1320.  ELSE 
  1321.  ENDIF 
  1322.    Process commands based on a condition
  1323. Format:    IF <expL>
  1324.             <statements>
  1325.         [[ELSE]
  1326.             <statements>]
  1327.         ENDIF
  1328. In this structured programming command, <expL> is evaluated.  If true, then any statements following the IF statement and prior to either a matching ELSE or ENDIF statement, whichever occurs first, will be executed.
  1329. If <expL> is false and an ELSE statement has been specified, then any statements after the ELSE and before the ENDIF are executed.
  1330. If <expL> is false and no ELSE has been specified, then all statements between the IF statement and the ENDIF statement are ignored. In this case, the program will continue with the first statement following ENDIF.
  1331. IF statements may be nested within one another provided that each IF has a matching ENDIF.
  1332. See also:        DO, DO CASE, DO WHILE, IIF
  1333. Format:    IIF(<expL>,<expr1>,<expr2>)
  1334. The IIF function returns the value of <expr1> or <expr2> depending on the logical value of <expL>.  If the logical expression <expL> is 
  1335.  then <expr1> is returned by the IIF function. If <expL> is 
  1336.  then <expr2> is returned by the IIF function.
  1337. This function may be used in place of the IF 
  1338.  ENDIF structure for simple conditional expressions.  This function is especially useful in CREATE REPORT and CREATE LABEL to conditionally specify field contents.The IIF function also executes considerably faster than the equivalent IF 
  1339.  ENDIF statements.
  1340. See also:  IF...ENDIF
  1341. INDEX 
  1342.    Create an index file
  1343. Format:    INDEX ON <expr> TO <file> 
  1344.         [FOR <expL>]
  1345.         [UNIQUE]
  1346. The INDEX command is issued to create an index file for the currently SELECTed database.
  1347. <expr> is a general expression which normally, but not always, involves fields in the currently SELECTed database.  The value of <expr> must be either numeric, character, logical or date.  Neither picture nor memo values are allowed.
  1348. The index created will be given a default extension of 
  1349. .  This default may be overridden by explicitly specifying an extension or by changing the default in the CONFIG.FX file.
  1350. The FOR <expL> clause may optionally be specified when creating indexes, and the index that is created will act as a filter on the existing database.  This type of index is called a filtered index.  This means of creating a filter is preferable to the SET FILTER TO command.  Combining FoxBASE+'s state-of-the-art indexing technique with a filter expression makes searches on indexed databases immensely fast.  
  1351. The UNIQUE option specifies that the occurrence of records with duplicate keys will cause only the first record encountered with a particular key value to be included in the index file.  All subsequent duplicate keyed records will be excluded from the index file.
  1352. Using the UNIQUE option of the INDEX command is the same as executing the SET UNIQUE ON command prior to an INDEX or REINDEX command.
  1353. If it is desired to continue updating the index but to process the database in the physical record order, execute  SET ORDER TO 0.
  1354. Now the database can be processed in record number order, but the index file will still be kept current if the key for a record is changed.
  1355. See also:        CLOSE, FIND, REINDEX, SEEK, SET INDEX, SET UNIQUE, SET ORDER, USE
  1356. ded from the index file.
  1357. Using the UNIQUE option of the INDEX command is the same as executing the SET UNIQUE ON command prior to an INDEX or REINDEX command.
  1358. If it is desired to continue updating the index but to process the database in the physical record order, execute  SET O
  1359. INKEY
  1360. Format:    INKEY([<expN>])
  1361. The INKEY function returns an integer value.  This value corresponds to the ASCII code value of the input key pressed by the user.  The integer returned will be between 0 and 255.
  1362. A zero will be returned if no key has been pressed by the user. If there are several keys in the type-ahead buffer, the value of the first key entered in the buffer will be returned.
  1363. This allows you to program non-printable keys within your FoxBASE+/Mac program.  A list of these keys and their associated ASCII code values follows:
  1364. The INKEY function also takes an optional numeric argument which specifies how many seconds (fractional seconds are OK) the program will wait for a keystroke before reporting that no key has been struck.  If INKEY is called with no argument, it immediately returns either a pending keystroke, or 0 if no key has been pressed.  If called with an argument of 0, INKEY will wait indefinitely for a keystroke. This could be used to shut down an application if no menu selection had been made for a specified amount of time.
  1365. See also:         CHR( ), ON KEY, READKEY( ), SET TYPEAHEAD
  1366. INPUT 
  1367.    Input data from screen to memory variable
  1368. Format:    INPUT [<expC>] TO <mem_var>
  1369. The INPUT command permits the input data to be entered from the keyboard into a <mem_var>.  If <mem_var> has not been created, INPUT will create it.
  1370. Inclusion of <expC> causes the expression value to be displayed as a prompting message.
  1371. If <expC> is a character string literal, it must be surrounded by single quotes, double quotes or brackets.
  1372. The type of expression input in response to this command determines the <mem_var> type created.  If you input a numeric value, a numeric memory variable will be created; if you input a character string value, a character string memory variable will be created, etc.
  1373. See also: ACCEPT, @ SAY/GET, READ, WAIT
  1374. INSERT 
  1375.    Insert a database record
  1376. Format:    INSERT 
  1377.         [BEFORE] 
  1378.         [BLANK]
  1379. INSERT without any additional clauses, inserts a new record into the current database, immediately after the current record.  INSERT then displays the new record for full screen editing in much the same way as APPEND.
  1380. INSERT BEFORE inserts a new record into the current database immediately prior to the current record.  The record is then displayed for full screen editing.
  1381. INSERT [BEFORE] BLANK inserts a blank record either immediately before or after the current record depending on whether or not the BEFORE option is specified.  In this instance, no automatic full screen editing takes place.
  1382. If the new record is displayed for full-screen editing, data may be entered only into the new record.
  1383. If CARRY is SET ON, and the BLANK option is not specified, data contained in the previous record is automatically entered into the INSERTed record.
  1384. If no SET FORMAT is active, the user is prompted for the values of each field within each record to be added using a default screen layout.  The default screen layout is displayed in the current screen font.
  1385. To move through a record's fields, move the pointer and click, or use the arrow keys (up, down, left, right).  To move through the database, click once on the appropriate arrow or use PgUp/PgDn.  Up moves you to the previous record and down moves you to the next record.
  1386. To open a memo or picture field for editing, place the editing cursor on it and double-click.  All standard text or picture editing features are available to you.  To close the memo or picture field, close the frame.  
  1387. To mark and unmark records for deletion, move the pointer to the delete/recall button and click once.  The delete/recall button will say delete when the record is not marked for deletion and recall when the record is marked.
  1388. If you want to quit editing and abandon all changes you have made to the current record, click once on the abort button, press command-period or press escape.  Note: Only the changes to the current record will be aborted.
  1389. When you are ready to exit from INSERTing, click once on the exit button, press command-enter or press control-w. 
  1390. Clicking the UP arrow moves you back to the previous record.  If you are currently positioned on the first record it will exit the INSERT process.  
  1391. Clicking the DOWN arrow will move you forward to the next record in the database.  If you are positioned on the last record of the database, it will exit the INSERT process.
  1392. INSERT is not recommended for use with large databases since an insertion near the front of the database forces rewriting of nearly every record.  This can take a very long time: use APPEND instead.
  1393. See also: APPEND, CHANGE,EDIT, SET CARRY, SET FORMAT
  1394. Format:    INT(<expN>)
  1395. This function evaluates the numeric expression and returns the integer part of the value.
  1396. See also:  ROUND()
  1397. ISALPHA
  1398. Format:    ISALPHA(<expC>)
  1399. The ISALPHA function returns a logical value.  
  1400.  is returned if <expC> begins with an alphabetical character.  
  1401.  is returned if <expC> begins with any non-alphabetical character.
  1402. See also:  ISLOWER(), ISUPPER(), LOWER(), UPPER()
  1403. ISCOLOR
  1404. Format:    ISCOLOR( )
  1405. The ISCOLOR function returns a logical value.  
  1406.  is returned if you are running FoxBASE+/Mac on a machine with four or more bits of QuickDraw color specified.  
  1407.  is returned otherwise.  This gives the programmer greater control when creating an application to run in both a color and non-color environment.
  1408. See also:  SET COLOR
  1409. ISLOWER
  1410. Format:    ISLOWER(<expC>)
  1411. The ISLOWER function returns a logical value.  
  1412.  is returned if the first character in <expC> is a lowercase alpha character.  
  1413.  is returned if the first character is any character other than a lowercase alpha character.
  1414. See also:  ISALPHA(), ISUPPER(), LOWER(), UPPER()
  1415. ISUPPER
  1416. Format:    ISUPPER(<expC>)
  1417. The ISUPPER function returns a logical value.  
  1418.  is returned if the first character in <expC> is an uppercase alphabetical character.  
  1419.  is returned if the first character is any character other than an uppercase alphabetical character.
  1420. See also:  ISALPHA(), ISLOWER(), LOWER(), UPPER()
  1421. JOIN 
  1422.    Join two databases
  1423. Format:    JOIN WITH <alias> 
  1424.         TO <file> 
  1425.         FOR <expL> 
  1426.         [FIELDS <list>]
  1427. The JOIN command creates a new database, <file>, from two other databases.  One database is the currently active database and the second database is identified by <alias>.  JOIN sets the record pointer to the first record in the active database and searches through the records in the <alias> database.  JOIN evaluates the FOR <expL> at each record.  If <expL> is true, a new record is written to the new <file>.  JOIN then moves to the second record in the active database and repeats the procedure.
  1428. If no FIELDS <list> is present, all fields in the active database, as well as all fields from the <alias> database that will fit within the field number limit of FoxBASE+/Mac, are included in the new <file>.  If a FIELDS <list> is present, only those fields contained in <list> will be included in <file>.
  1429. Warning:  The time spent executing this command may be very great depending on the size of the  2  database files being JOINed.  It is possible to exceed available disk space with the JOIN command even if the sizes of the  2  database files are modest.
  1430. See also:  SET FIELDS, SET RELATION
  1431. KEYBOARD 
  1432.    Place data into keyboard buffer
  1433. Format:    KEYBOARD <expC>
  1434. The KEYBOARD command allows the keyboard buffer to be stuffed with an arbitrary character string as if the data had been entered from the keyboard.
  1435. This can be useful, for instance, in creating self-running demonstration systems which showcase your applications.
  1436.  LABEL
  1437.  Create labels from a database and label file
  1438.  Format:  LABEL FORM <file> 
  1439.         [<scope>] 
  1440.         [WHILE <expL>]
  1441.         [FOR <expL>] 
  1442.         [TO PRINT [PROMPT]]
  1443.         [TO FILE <file>]
  1444.         [ENVIRONMENT]
  1445. The LABEL command produces label output from report/label files created with FoxReport, the FoxBASE+/Mac report design utility.  The label output may be sent to the printer, to the screen or to an ASCII text file.
  1446. The default extension for a label file is ".frx," the same as a FoxReport report file.  Label form files that were created with previous versions of FoxBASE+/Mac and those imported from the DOS environment (.lbl) can also be executed with this command.
  1447. Labels will be printed for all records in the <file> unless a <scope>, WHILE, or FOR clause is specified.
  1448. Label output is printed to the screen unless the TO PRINT clause is specified.  Using the optional PROMPT keyword causes the print dialog to come forward before printing begins.
  1449. If the TO FILE option is used, the label output will be sent to an ASCII text <file>.  The TO PRINT and TO FILE options are mutually exclusive and both options should not be specified in the same LABEL command.
  1450. The ENVIRONMENT option can be specified if a view file by the same name as the label form exists, and FoxBASE+/Mac will restore the environment settings stored in this file before the labels are printed.  If a matching view file can not be found, FoxBASE+/Mac will continue processing the label output without restoring the ENVIRONMENT.
  1451.  See also: MODIFY LABEL, CREATE LABEL
  1452. Format:    LEFT(<expC>,<expN>)
  1453. The LEFT function returns a specified number of characters, starting from the left-most character in the character string.
  1454. The LEFT function works the same as the SUBSTR function with a starting position of one (1).
  1455. If <expN> is greater than the length of <expC>, the entire string will be returned by the LEFT function.
  1456. If <expN> is less than or equal to zero, the null string will be returned by the LEFT function.
  1457. See also:  AT(), LTRIM(), RTRIM(), RIGHT(), SUBSTR()
  1458. Format:    LEN(<expC>)
  1459. This function returns the length of the character string expression.
  1460. See also:  TRIM()
  1461. LIST FILES 
  1462.    List statistics about files on disk
  1463. Format:    LIST FILES 
  1464.         [ON <drive|folder>] 
  1465.         [LIKE <skel>] 
  1466.         [TO PRINT]
  1467. This variant of LIST is used to list files on disk.  You may view all files on a specified disk drive or folder, or only files which match a <skel> pattern containing file 
  1468. wild-cards
  1469.  characters. 
  1470. LIST FILES without arguments, displays the vital statistics of database files stored in the default folder or disk.  The data displayed is:
  1471.   database name
  1472.   the number of records
  1473.   the date and time of the last update
  1474. The TO PRINT option directs screen display to the printer.
  1475. See also:  DIRECTORY
  1476. LIST MEMORY 
  1477.    List the contents of memory variables
  1478. Fomat:    LIST MEMORY [TO PRINT]
  1479. This LIST option shows the name, type, contents, and status of all memory variables currently defined.  It also displays the number of memory variables defined, the number of bytes used, the number of additional memory variables available and the number of bytes available for additional memory variables.
  1480. The default maximums for memory variables are as follows:
  1481.   256 memory variables
  1482.   6000 bytes of string memory variables
  1483. If desired, these limits may be increased in your config.fx file.  To allocate more space for storage of string variables, increase mvarsize.  To specify a larger number of memory variables, increase mvcount.  For more information concerning the config.fx file refer to the chapter on 
  1484. Customizing
  1485.  in the User's Guide.
  1486. The TO PRINT option may be specified to direct screen display to the printer
  1487. LIST STATUS 
  1488.    List the status of the FoxBASE+/Mac environment
  1489. Format:    LIST STATUS [TO PRINT]
  1490. This form of the LIST command is used to display the following information:
  1491.   Procedure file in use
  1492.   Currently Active Databases
  1493.   Currently Active Indexes
  1494.   Index File Keys
  1495.   Alias Information
  1496.   Database Relations
  1497.   Currently Active Memo Files
  1498.   File Search Path
  1499.   Default Disk Drive
  1500.   Print destination
  1501.   Margin Setting
  1502.   Decimals Setting
  1503.   Memowidth Setting
  1504.   Typeahead Setting
  1505.   History Setting
  1506.   Date Format Setting
  1507.   On Key and On Escape Assignments
  1508.   SET Command Switch Settings
  1509.   Function Key Assignments
  1510. The TO PRINT option may be specified to direct screen display to the printer.
  1511. LIST STRUCTURE 
  1512.    List the structure of the active database
  1513. Format:    LIST STRUCTURE [TO PRINT]
  1514. This LIST option shows the structure of the active database.  This is helpful in recalling names, sizes, decimals, etc. of the fields in a database during interactive sessions.  Also displayed is the current number of records in the database and the date it was last updated.
  1515. The TO PRINT option may be specified to direct screen display to the printer.
  1516. See also:  DISPLAY STRUCTURE, MODIFY STRUCTURE
  1517. LIST 
  1518.    List database records or expressions
  1519. Format:    LIST [<scope>] 
  1520.         [[FIELDS] <expr_list>] [FOR <expL>]
  1521.         [WHILE <expL>] [OFF] [TO PRINT]
  1522. This variant of the LIST command is normally used to list the contents of the active database file.  It can also be used to display the results of expressions which may consist of literals, memory variables, database fields, memo fields, and picture fields. 
  1523. For each record in <scope>, the expressions in <expr_list> are evaluated and their values are listed on the screen.  Here are some points to note:
  1524. The default <scope> is ALL.  If the FOR clause is present, <expr_list> is displayed only for records where <expL> is true.  If the WHILE clause is present, display continues as long as <expL> remains true.  If both FOR and WHILE clauses are omitted, then LIST is applied to all records within <scope>.  Memo field and picture field contents will not be displayed unless explicitly specified in <expr_list>.
  1525. Unless the OFF option is specified, the current record number is prefixed to each line displayed.
  1526. The TO PRINT option may be specified to direct screen display to the printer.
  1527.  LOAD
  1528.  Load a resource into memory
  1529.  Format: LOAD <resname> [FUNCTION]
  1530. The LOAD command loads an XCMD (external command) or XFCN (external function) resource into memory from the current resource file.  Any combination of XCMDs or XCFNs (up to 16 total) can be loaded into memory at one time.  Once LOADed, XCMDs and XFCNs will occupy memory until they are RELEASEd.
  1531. XCMDs and XFCNs are <MI>code segments-- they are not stand alone applications, but rather separately compiled resources that you can load into the Macintosh's memory and execute through FoxBASE+/Mac.
  1532. By default, FoxBASE+/Mac looks for a resource type of XCMD when the LOAD command is issued.  Using the optional FUNCTION clause, however, tells FoxBASE+/Mac to search for an XFCN type resource.
  1533. When the LOAD command is issued, the first file that will be searched for the named resource will be the current resource file (see SET RESOURCE for information of changing the current resource file).  If the resource is not found in the current resource file, the FoxUSER file will be searched next.
  1534. Example
  1535. You have a resource file called XCMDFile that has 4 XCMD resources in it, one of them named "Music" The following FoxBASE+/Mac program segment would LOAD that resource into memory, CALL the loaded resource (passing the parameter values"Jazz" and 5 to the XCMD), store the value returned by the resource in the variable named result and RELEASE the resource MODULE.
  1536.  SET RESOURCE TO "XCMDFile"
  1537. LOAD "Music"
  1538. CALL "Music" TO result WITH "HardDisk:FOX:Music:Jazz",5
  1539. RELEASE MODULE "Music"
  1540. @WARNING = NOTE: When passing filenames to an XCMD or XFCN, pathnames are permitted and are highly recommended.  External resource routines know nothing about the current or default folder, and pathnames ensure that files are properly found by the external routines.
  1541. See also:  CALL, CLEAR MEMORY, RELEASE MODULE, SET RESOURCE
  1542. LOCATE 
  1543.    Locate a database record
  1544. Format:    LOCATE [<scope>] [FOR <expL>] 
  1545.         [WHILE <expL>]
  1546.             [commands]
  1547.         [CONTINUE]
  1548. The LOCATE command searches the SELECTed database for the first record which matches the <scope> or FOR/WHILE condition.  If no <scope> is specified, LOCATE searches the entire database.
  1549. An iterative procedure which LOCATEs records and performs a series of actions on those records can be created by placing a series of FoxBASE+/Mac statements between the LOCATE and CONTINUE commands.  When CONTINUE is executed, the search process resumes, starting where it left off.  The CONTINUE command can be executed repeatedly until the end of the <scope>, EOF( ) is .T., or until another LOCATE command for the same workarea resets the search criteria.
  1550. The LOCATE 
  1551.  CONTINUE iterative command is specific to the workarea for which it is defined.  If another workarea is SELECTed, the iterative search process is suspended until that workarea is re-SELECTed and then it may be continued.
  1552. See also:        CONTINUE, FOUND( ), EOF( )
  1553. Format:    LOG(<expN>)
  1554. The LOG function returns the natural logarithm of <expN>.
  1555. WARNING: The LOG function cannot accept arguments which are less than or equal to zero.
  1556. See also:        EXP( ), SET DECIMALS, SET FIXED
  1557. LOOP  
  1558.    Return control to the DO WHILE statement
  1559. Format:    DO WHILE <expL>
  1560.             <statements>
  1561.         [LOOP]
  1562.             <statements>]
  1563.         [EXIT]
  1564.         ENDDO
  1565. LOOP is a statement which may be placed anywhere between the DO WHILE and ENDDO statements.  Executing the LOOP statement causes control to return directly back to the DO WHILE command.
  1566. LOWER
  1567. Format:    LOWER(<expC>)
  1568. The LOWER function converts all uppercase letters to lowercase letters in a specified character string expression.
  1569. See also:  ISALPHA(), ISLOWER(), ISUPPER(), UPPER()
  1570. LTRIM
  1571. Format:    LTRIM (<expC>)
  1572. The LTRIM function removes leading blanks from a specified <expC>.
  1573. This function is especially useful for removing the leading blanks which occur as a result of the STR function or to remove any leading spaces from user input.
  1574. See also:  LEFT(), RIGHT(), RTRIM(), SUBSTR(), TRIM()
  1575. LUPDATE
  1576. Format:    LUPDATE( )
  1577. The LUPDATE function returns the date that the currently active database was last updated.
  1578. This function is useful when verifying that a particular update procedure is run on a daily basis.
  1579. Format:    MAX(<expr>,<expr>)
  1580. The MAX function returns the larger of two numeric expressions or of two date expressions.
  1581. See also:  MIN()
  1582. MENU -Menu creation facility
  1583.  Format:  MENU BAR [<array>[,<expN>]] or
  1584.         MENU BAR [<expC>]
  1585.         MENU <expN1>,<array>[,<expN2>][,<expN3>] or
  1586.         MENU <expN1>,<expC>[,<expN2>]
  1587.         MENU OFF|ON <expN1>[,<expN2>]
  1588.         ON MENU [<commands>]
  1589.         MENU(0|1)
  1590. The menu creation facility consists of several commands that are used to create pull down menus.  This powerful feature allows the standard FoxBASE+/Mac menu bar to be replaced with a menu bar of your design.  The Apple menu, the File menu, and the Edit menu remain in the menu bar when a user-defined menu system is installed. However, options can be added to the Edit menu, the options of the File menu can be replaced with options that you specify, and the first option in the Apple menu (About...) can be replaced with one of your choosing.  All other menus are replaced by the user defined menu bar. The MENU BAR command with no arguments will reestablish the FoxBASE+/Mac menu system.
  1591.  Menu Creation Steps
  1592. The first step in creating a new menu bar is to DIMENSION and initialize an array for the menu bar itself.  The menu bar contains the menu titles such as File, Edit, Database, etc.  Next, you can DIMENSION and initialize an array for each list of menu options, or you include a character expression with the MENU command to define the menu options.  Typical menu options might be New, Open, Close.   Then you install the menu bar using the MENU BAR command.
  1593. Each individual menu is installed into the menu bar using a series of MENU commands, one for each menu.  The MENU command installs menu options from the named array; alternately you can use the character expression <expC> to name the options and not use an array.
  1594. Next, using the ON MENU command, you define the action(s) to be taken should a menu option be chosen.  Finally, you activate the new menu system by issuing a READ or WAIT command.
  1595. The Video.prg program, provided with your package, contains an example of a menu system.
  1596.  MENU BAR [<array>[,<expN>]]
  1597. The MENU BAR command is used to install the menu bar <array> into the FoxBASE+/Mac menu bar after the Apple, File and Edit menus.  The items in the <array> must be character type.  By default all <array> elements become menu titles, unless <expN> is used to specify the number of elements that should be used.  For example, if <array> contains 10 elements and you want to add 3 titles to the menu bar (after Apple, File and Edit), <expN> should have the value 3.  The first 3 elements in the <array> then become menu titles.
  1598. MENU BAR <expC>
  1599. The MENU BAR command can now accept a character expression, as well as an array of elements, to define a menu bar.  For instance, if you wanted to create a menu bar containing the menus Position, Record and Utilities, you could use the following command.
  1600. MENU BAR "Position;Record;Utilities"
  1601. MENU <expN1>,<array>[,<expN2>][,<expN3>] or
  1602. MENU <expN1>,<expC>[,<expN2>]
  1603. This MENU command installs a menu of options into a specified position in the menu bar, or attaches a submenu to an existing menu option, creating a hierarchical submenu.
  1604. MENU <expN1>,<array>[,<expN2>][,<expN3>]
  1605. In the first approach, <expN1> specifies the position within the menu bar that the menu will appear, with the first menu after Edit being position 1.  The elements in the <array> will be installed as options in the menu and must be character type.  By default, all the elements of <array> are installed as menu items.  To limit the number of elements from the <array> that will be used as menu options, specify <expN2>. For example, if the value of <expN2> is 4, then the first 4 elements in <array> are used as menu options.
  1606. Finally, <expN3> may be used to attach this menu as a submenu (hierarchical menu) to an existing menu option.
  1607. Example: MENU 2,submenu,3,2
  1608. In this example, a hierarchical menu with three options from the array named"submenu" is being added to the second option of MENU 2.
  1609.  MENU <expN1>,<expC>[,<expN2>]
  1610. In the second approach, <expN1> specifies the position within the menu bar that the menu will appear, with the first menu after Edit being position 1.  The menu options are listed in <expC>, each item separated by a semi-colon.
  1611. Example: MENU 2,"Open/O;Close/C;(-;(Continue;Locate/L",2
  1612. As in the previous approach, <expN2> may be used to attach this menu as a submenu (hierarchical menu) to an existing menu option.
  1613.  Apple, File, Edit Menus
  1614. Menu options can also be placed in the Apple, File and Edit menus.  The Apple menu is designated as MENU -2, File is MENU -1 and Edit is MENU 0.
  1615. Only one option can be placed in the Apple menu and, no matter what option number is specified, the new option always replaces the About FoxBASE+ option.  This allows you to add your own About... option.
  1616. Options placed in the File menu replace all existing options-- if you put one option in the menu, only one option will appear.
  1617. Options placed in the Edit menu do not replace existing options, but are added to those already present.
  1618.  Meta Characters
  1619. Meta characters may be used in menu option descriptions in order to control the appearance and behavior of the menu options.
  1620. -Meta Character, Result-
  1621. ;, Separate multiple options
  1622. ! <char>, Mark  option with  <char> 
  1623. <<, Followed by B,, I,, U,, O or S to set style
  1624. / <char>, Keyboard shortcut <<char>>
  1625. (, Disable the option
  1626. (-, Causes the option to be a divider line
  1627. , Attaches an icon to the menu option
  1628.  Multiple Options
  1629. When specifying multiple menu options with a character string in the MENU command, use the semi-colon to separate the options.
  1630.   Marking Options
  1631. Some menu options have actions associated with them that make the options act as toggle switches or attribute commands -- once a toggle or attribute is selected, it remains in effect until canceled.  To signal to the user that these options are attributes, you can place a character or mark beside the option (often a check mark 3).  To place a single character to the left of a menu option, use an exclamation mark ("!") followed by the marking character. 
  1632.  Type Styles
  1633. The system font (Chicago 12) is the only font available for menu options.  However, you can assign a type style (or type styles) that will help to make options clearer or more distinctive.
  1634. If you wish to change the type style used for any of the menu options, use the less-than symbol ("<<") and one of the following letters: B for bold, I for italic, U for underline, O for outline or S for shadow.  You can assign any combination of type styles to a menu option, just precede each style letter with the "<<" meta character.
  1635.  Keyboard Shortcuts
  1636. Keyboard shortcuts allow you to specify options that can be executed from the keyboard by pressing a Command key combination.  This gives users the ability to choose the option from the menu by using the mouse or by entering the shortcut key combination.
  1637. To add a keyboard shortcut to a menu option, include the slash ("/") and the single character that, in conjunction with the Command key, will select the menu option.
  1638.  Disable Option
  1639. Some menu options do not always need to (and should not) be available for the user to choose at all times in all circumstances.  When options should not be available, they should be disabled.  A disabled menu option appears dimmed in the menu, is not highlighted when the cursor moves over it and cannot be chosen by the user.  Disabling a menu option can be accomplished in two ways (see MENU OFF below), one of which is to use a meta-character when defining the menu option.
  1640. The meta-character that disables a menu option is the left parenthesis symbol ("(").  To enable a disabled menu option, reinstall the menu option without the"(" character.
  1641.  Option Divider
  1642. The options that appear in one menu can generally be grouped into categories.  Options that perform similar actions should be grouped together in the menu and separated from other groups of options.
  1643. To separate groups of options, use the left parenthesis mark followed by a hyphen ("(-").  This meta character combination draws a dotted line across the width of the menu.  Like a disabled option, it is not highlighted when the cursor moves over it and the user cannot choose it.
  1644.  Icons and Options
  1645. If you want, you can even attach icons to menu options.  Use the circumflex ("^"), followed by a number from 1 to 9.  This icon number is then added to 256 to yield the icon's resource ID (257-265).  The icon matching that resource ID number is then displayed to the left of the text it is attached to in the menu.  To display just icons in a menu, attach the icons to a single space.
  1646. MENU OFF |ON<expN1>[,<expN2>]
  1647. The MENU OFF command disables an entire menu or a particular option in the specified menu.  To disable an entire menu, use the form MENU OFF <expN1>. <expN1> indicates which menu in the menu bar (by number) should be disabled.  When a menu is disabled, its name and all its options appear"grayed". To disable an individual item in a menu, use the form <expN1>,<expN2>.  Once again, <expN1> indicates which menu in the menu bar the option is in, and <expN2> indicates which menu option within the menu should be disabled.
  1648. The MENU ON command re-enables an entire menu or a particular item in the specified menu.  To enable an entire menu, use the form MENU ON <expN1>.  <expN1> indicates which menu in the menu bar (by number) should be enabled.  When a menu is enabled, it no longer appears "grayed".  To enable an individual item in a menu, use the form <expN1>,<expN2>.  <expN1> indicates which menu in the menu bar the option is in, and <expN2> indicates which menu option within the menu should be enabled.
  1649. One special case exists for this menu command.  If the command
  1650.  MENU ON -3,1
  1651. is issued, a "hidden" menu is activated from which you can determine if a screen or window event has occurred during an active READ.  If, during the READ, the user closes the active screen or window or brings another window to the front, this hidden option will receive a "hit" -- the menu processing functions MENU(0) and MENU(1) will return values indicating that the first option in MENU -3 has been selected.  This allows developers to monitor screen and window actions in sophisticated applications that require processing through multiple windows.
  1652.  MENU(0|1) 
  1653. The MENU(0) function returns a numeric value that indicates which menu in the menu bar had an option chosen (received a menu "hit"), and the MENU(1) function returns a numeric value that indicates which option within the menu was chosen (received a menu "hit").  These two values together reveal the exact menu option that was chosen.  Commonly, these values are passed as PARAMETERS to a menu handling routine (see ON MENU below).
  1654. If a selection is made from user-defined options added to the Edit menu, MENU(0) returns a value of 0 (zero), and MENU(1) returns a value based on the order in which you defined the options to add to this menu.  For instance, if the first option you add to this menu is selected, MENU(1) will return a value of 1.
  1655. If a selection is made from a user-defined File menu, MENU(0) returns a value of -1 (negative one), and MENU(1) returns the number of the option that was chosen.
  1656. If the first item of the Apple menu is redefined and the user chooses this option, MENU(0) will return a value of -2 (negative two), and MENU(1) will return a value of 1.
  1657. If the "hidden" menu is activated, a screen or window event will cause MENU(0) to return a value of -3 (negative three), and MENU(1) will return a value of 1.
  1658.  ON MENU [<command>]  
  1659. The ON MENU command defines the action to be taken should a menu option be chosen.  When a menu option is chosen the READ or WAIT is terminated and <command> is executed.  Typically <command> is a DO statement with a WITH clause which passes MENU(0) and MENU(1) to a menu handling program.
  1660. Example: ON MENU DO MenuProc WITH MENU(0),MENU(1)
  1661. In the example above, if the user makes a selection from the user-defined menu system, the PROCEDURE or program named MenuProc will be executed.  The values of the two functions MENU(0) and MENU(1) will be passed to the menu handling routine (MenuProc) for evaluation and processing.
  1662. ll cause MENU(0) to return a value of -3 (negative three), and MENU(1) will return a value of 1.
  1663. @HEADING3 = ON MENU [<<cMENU
  1664. Format:    MENU(<expN>)
  1665. The MENU function is used to identify the last item selected from a user-defined menu bar.  If passed a 0, it returns the number of the menu from which the item was selected.  If passed a 1, it returns the number of the item on that menu which was selected.
  1666. See  also:        ON MENU, MENU BAR, READ, MENU (command)
  1667. MESSAGE
  1668. Format:    MESSAGE([<1>])
  1669. The MESSAGE function with no argument returns the current error message string.  This variant of the MESSAGE function may be used either with or without an ON ERROR condition in effect.  With an ON ERROR condition, the MESSAGE and ERROR functions are useful in error handling routines for sending messages to the user regarding actions to be taken when errors occur.
  1670. The message function with an argument of 1 returns the source code for the last line which caused an error during an ON ERROR condition.
  1671. See also: ERROR(), ON ERROR
  1672. Format:    MIN(<expr>,<expr>)
  1673. The MIN function returns the lower of two numeric expressions or of two date expressions.
  1674. See also:  MAX()
  1675. Format:    MOD(<expN1>,<expN2>)
  1676. The MOD function returns the remainder obtained upon dividing <expN1> by <expN2>.
  1677. A positive number is returned if <expN2> is positive and a negative number is returned if <expN2> is negative.
  1678. MODIFY COMMAND/FILE 
  1679.    Modify/create a file
  1680. Format:    MODIFY COMMAND/FILE [<file>]
  1681. This format of MODIFY invokes a text editor for editing the specified <file>.  If the COMMAND option is used, the .PRG extension is assumed.  This is used for editing command files.  MODIFY FILE does not assume the .PRG extension.
  1682. If MODIFY COMMAND is invoked, when modifications to the file are complete, the updated file is written to disk, the program is compiled, and the old version of the program (if any) is automatically expunged from FoxBASE+/Mac's internal program storage cache.  The FoxBASE+/Mac editor also creates a backup 
  1683.  file at this time.
  1684. The Edit menu contains the commands used while editing a file. 
  1685. The Undo, Cut, Copy, Paste, and Clear commands work as they're described in the owner's manual that came with your computer.  Find
  1686. , Find again, and Replace and find again, though, are commands that are specific to FoxBASE+/Mac.
  1687. Please refer to Chapter 4 of the User's Guide for a complete tour of the Edit  menu.
  1688.  MODIFY LABEL -Modify (or create) a label file
  1689.   Format: MODIFY LABEL [<file>]
  1690. The MODIFY LABEL command allows you to modify (or create) a FoxBASE+/Mac label output form file.
  1691. If a <file> is not specified in the command, an"Untitled" layout screen will be presented.
  1692. Complete instructions for designing and modifying a label file with FoxReport can be found in the FoxReport - FoxForm - FoxCode manual.  And, there is also a chapter in the FoxBASE+/MacTutorial that deals with the subject.  For information on printing labels, see the LABEL command.
  1693.  See also: CREATE LABEL, LABEL
  1694.  MODIFY REPORT- Modify (or create) report format file
  1695.  Format: MODIFY REPORT [<file>]
  1696. When you issue the MODIFY REPORT command, you invoke FoxReport, the FoxBASE+/Mac report design facility which allows you to modify (or create) FoxBASE+/Mac report form files.  With FoxReport you can design custom report forms that meet your specific needs.
  1697. If a <file> is not specified in the command, an "Untitled.frx" layout screen will be presented. 
  1698. Complete instructions on creating and modifying a report form file with  FoxReport can be found in the FoxReport - FoxForm - FoxCode manual.  And, there is also a chapter in the FoxBASE+/Mac Tutorial that deals with the subject.  For information on printing a report, see the REPORT command.
  1699.  See also: CREATE REPORT, REPORT
  1700. MODIFY STRUCTURE 
  1701.    Modify the structure of a database
  1702. Format:    MODIFY STRUCTURE
  1703. The MODIFY STRUCTURE command displays the structure of the database in USE.  Full screen editing may be performed on the structure, including addition and deletion of fields, and modifications of field names, sizes, and types.  
  1704.   Change an existing field name (up to 10 characters) in the Name box.  Once a field name has been changed, modifications can not be made to the type or size of any fields in the database.  Also, fields can not be inserted or deleted.
  1705.   Change the data type (Character, Numeric, Date, Logical, Memo, or Picture) of existing fields by clicking the Type popup and dragging.  Once a field type has been changed, modifications can not be made to the name of any fields in the database.  
  1706.   Modify the width of any existing field.  For character data up to a maximum of 254.  For numeric data the maximum width is 16.
  1707.   Field widths and decimal places are set or changed by either clicking on the arrows or by directly editing the fields themselves.
  1708.   Date, Logical, Memo, and Picture data types have preset field widths which cannot be changed.
  1709.   Insert new fields or delete existing fields by clicking the appropriate button.  Once a new field has been inserted or an existing field has been deleted, the name of existing fields can not be changed.
  1710. You save the modified structure by clicking OK.  Abort modification by  clicking Cancel.
  1711. FoxBASE+/Mac makes an automatic backup copy of the current database prior to structural modifications.  Once the modifications are complete, the data contained in the backup 
  1712.  copy of the database file is appended to the newly modified record structure.  A memo 
  1713.  backup file with a 
  1714.  extension is also created if the number of memo fields is modified.
  1715. See also:  CREATE<file>
  1716. MONTH
  1717. Format:    MONTH(<expD>)
  1718. MONTH, the month of year function, returns the numeric month, from 1 to 12, which corresponds to <expD>.  January is month 1 and December is month 12.
  1719. The date expression may be the system date function, a memory variable, or a database field.
  1720. See also:  CMONTH, DAY, YEAR, SYS()
  1721. Format:    NDX(<expN>)
  1722. The NDX function returns the name of an open index file in the currently selected work area.
  1723. The index file name returned is determined by its placement in theindex list.  If <expN> evaluates to one, then the name of the first index file specified in the index list will be returned.
  1724. <expN> must evaluate to a number between one and seven.
  1725. FoxBASE+/Mac will return the null string if there is no open index file in the position specified by <expN>.
  1726. See also:  DBF(), FIELD(), SYS(7)
  1727. NOTE | * | && 
  1728.    Place comments in command file
  1729. Formats:    NOTE [<comments>]
  1730.         * [<comments>]
  1731.         && [<comments>]
  1732. The NOTE command allows comments to be placed in a command file.  FoxBASE+/Mac ignores all characters in a line that begins with either NOTE or * (asterisk).  Should you wish to continue a comment on the following line, a semi-colon (;) should be placed at the end of the first comment line.
  1733. Comments may also be added at the end of a command line by preceding the comment with two ampersands (&&).  Use of in-line comments to denote the end of IF and DO constructs greatly improves the readability of application code.
  1734. ON ERROR
  1735.    Trap for an error in program execution
  1736. Format:    ON ERROR [<command>]
  1737. The ON command sets a trap in a program for a particular condition. When the condition occurs, the trap is triggered and the specified command is executed.
  1738. The trap may be triggered by the occurrence of a FoxBASE+/Mac error (ERROR), or depression of the Escape key (ESCAPE or Command .), any key (KEY), or a specific key (KEY = <expN>).  If more than one ON is active, the precedence of these conditions is ERROR, then ESCAPE, and finally either KEY or KEY = <expN>.
  1739. An ON command remains in effect until another ON command of the same type is encountered.  The new <command> specified supercedes the old one, or the old ON command may be deactivated by omitting the <command>.
  1740. After the <command> is complete, program execution resumes on the line after the line on which the branch occurred.  However, if the <command> is a DO <file> command and the <file> is exited via a RETRY statement, execution resumes on the same line on which the branch occurred.
  1741. See also:        INKEY( ), READKEY, SET ESCAPE, RETURN, RETRY, SYS(18)
  1742. ON KEY
  1743. The ON KEY= format designates a specific key as a 
  1744. hot key
  1745. .  This enables the developer to implement sensitive>context-sensitive help by redefining the F1 keys>function key, for example.  The SYS(16) and SYS(18) functions can be used to return the active procedure and the name of the field being entered when the hot-key was pressed. 
  1746. A key representing a printable character is designated as hot-key by using the cON  ESCAPE
  1747.    Trap for an escape in program execution
  1748. Format:    ON ESCAPE [<command>]
  1749. The ON command sets a trap in a program for a particular condition. When the condition occurs, the trap is triggered and the specified command is executed.
  1750. The trap may be triggered by the occurrence of a FoxBASE+/Mac error (ERROR), or depression of the Escape key (ESCAPE or Command . ), any key (KEY), or a specific key (KEY = <expN>).  If more than one ON is active, the precedence of these conditions is ERROR, then ESCAPE, and finally either KEY or KEY = <expN>.
  1751. An ON command remains in effect until another ON command of the same type is encountered.  The new <command> specified supercedes the old one, or the old ON command may be deactivated by omitting the <command>.
  1752. After the <command> is complete, program execution resumes on the line after the line on which the branch occurred.  However, if the <command> is a DO <file> command and the <file> is exited via a RETRY statement, execution resumes on the same line on which the branch occurred.
  1753. ON ESCAPE will not be executed if SET ESCAPE is OFF.
  1754. See also:        INKEY( ), READKEY, SET ESCAPE, RETURN, RETRY, SYS(18)
  1755. ON KEY
  1756.    Trap for a condition in program execution
  1757. Formats:    ON KEY [<command>]
  1758.         ON KEY = <expN> [<command>]
  1759. The ON command sets a trap in a program for a particular condition. When the condition occurs, the trap is triggered and the specified command is executed.
  1760. The trap may be triggered by the occurrence of a FoxBASE+/Mac error (ERROR), or depression of the Escape key (ESCAPE or Command . ), any key (KEY), or a specific key (KEY = <expN>).  If more than one ON is active, the precedence of these conditions is ERROR, then ESCAPE, and finally either KEY or KEY = <expN>.
  1761. An ON command remains in effect until another ON command of the same type is encountered.  The new <command> specified supercedes the old one, or the old ON command may be deactivated by omitting the <command>.
  1762. After the <command> is complete, program execution resumes on the line after the line on which the branch occurred.  However, if the <command> is a DO <file> command and the <file> is exited via a RETRY statement, execution resumes on the same line on which the branch occurred.
  1763. Except for the ON KEY = <expN> format, the keystroke that activates the ON <command> is stored in the keyboard buffer.  This key should be cleared from the buffer with INKEY( ) or a similar command or function.
  1764. The ON KEY= format designates a specific key as a 
  1765. hot key
  1766. .  This enables the developer to implement sensitive>context-sensitive help by redefining the function key, for example.  The SYS(16) and SYS(18) functions can be used to return the active procedure and the name of the field being entered when the hot-key was pressed. 
  1767. A key representing a printable character is designated as hot-key by using the character's ASCII value for <expN>.  A function key or a control key can be designated as the hot-key by using the specified 
  1768. scan code
  1769.  assigned to the key plus 256 for <expN>.  A table of these values is provided in Appendix D of the manual.
  1770. Here are a few additional tips and guidelines concerning the use of ON KEY= routines for context-sensitive help.
  1771.   The help routine must not attempt to issue another READ, @...GET, or CLEAR GETS.  An attempt to do so will cause the error 
  1772. A READ is currently in effect
  1773.  to occur.
  1774.   When using SYS(16) to return the name of the procedure, use SUBSTR( ) to strip the disk drive name from the front of the procedure name returned so your program can be installed on any disk-drive.
  1775. See also:        INKEY( ), READKEY, SET ESCAPE, RETURN, RETRY, SYS(18)
  1776. YS(18)
  1777. ON MENU 
  1778.    Trap menu hits
  1779. Format:    ON MENU [<command>]
  1780. The ON MENU command defines the action to be taken should a menu hit occur.  When a menu hit occurs the READ or WAIT is terminated and <command> is executed.  Typically <command> is a DO statement with a WITH clause which passes MENU(0) and MENU(1) to a menu handling program.
  1781. See Also:         MENU
  1782. Format:    OS( )
  1783. The OS function returns the name of the host operating system under which FoxBASE+/Mac is running.
  1784. See also:  DISKSPACE(), VERSION()
  1785. PAGENO() 
  1786.    Returns the page number of a report
  1787. Insert this function as desired in a report to print the current page number.
  1788. deletion from the database in USE.
  1789. There is no way to retrieve DELETEd records once the PACK command has been issued.  The DELETEd records are gone forever.
  1790. If the database in USE is being used with one or more indexes enabled, PACK will rebuild the index files.
  1791. Regardless of the setting of SET ESCAPE, pressing ESC will not interrupt a PACK command. 
  1792. See also:        DELETE, RECALL, ZAP
  1793. PARAMETERS 
  1794.    Define memory variables as procedure parameters
  1795. Format:    PARAMETERS <parm_list>
  1796. The PARAMETERS command allows local variable names to be assigned to data passed from a calling program.
  1797. This command must be the first statement in the 
  1798. called program.
  1799.  A parameter within <parm_list> may be any valid memory variable name.  Parameters within <parm_list> are separated by commas (,) and must correspond exactly to the number of items in the calling program's list.  If the value of a memory variable is changed in the called program, the new value is passed back to calling program.
  1800. See also:        DO, PRIVATE, PUBLIC, PROCEDURE
  1801. Format:    PCOL([1])
  1802. The PCOL function returns the current column position of the printer.  If the optional argument 1 is specified, the column postion is expressed in pixels.
  1803. PCOL is especially useful for relative addressing of output to the printer.
  1804. See also:        @, COL( ), ROW( ), PROW( )
  1805. PRIVATE 
  1806.    Define a local memory variable
  1807. Formats:    PRIVATE <mem_var_list>
  1808.         PRIVATE ALL [LIKE|EXCEPT <skel>]
  1809. The PRIVATE command allows memory variable names created in a calling program or declared previously as PUBLIC to be re-used without destroying the previous values.
  1810. During execution of the program containing the PRIVATE memory variables, any variables which share the same name will be 
  1811. hidden
  1812.  from the user until this program has completed execution.  Once the program containing the PRIVATE command has completed execution, all memory variables which shared the same name as those in the PRIVATE command will be reinstated.
  1813. A specific list of PRIVATE memory variables may be declared (first Format) or a template may be used to specify PRIVATE memory variables (second Format).
  1814. See also:        DO, PARAMETERS, PUBLIC
  1815. PROCEDURE 
  1816.    Define the start of a procedure
  1817. Format:    PROCEDURE <procedure name>
  1818. The PROCEDURE command is the first statement within a procedure module.  It identifies the beginning of each procedure in a procedure file.  Procedure names may be a maximum of 8 characters long.  They must begin with a letter and may contain any combination of letters, numbers and underscores thereafter.
  1819. An implicit RETURN is performed whenever execution falls through to a PROCEDURE statement.
  1820. See also:        SET PROCEDURE TO
  1821. Format:    PROW([1])
  1822. The PROW function returns the current row position of the printer.  If the optional argument 1 is specified, the row postion is expressed in pixels.
  1823. PROW is especially useful for relative addressing of output to the printer.
  1824. See also:        @, COL( ), PCOL( ), ROW( )
  1825. LightspeedC
  1826. eWILD
  1827. W    HyperCardSOLG
  1828. VieweraSPNT
  1829. SuperPainteMPNT
  1830. MacPaintpMDRW
  1831. MacDrawMDL*
  1832. myDiskLabeler
  1833.  2.5.2LC
  1834. ICONstructor 1.0
  1835. IconMover
  1836. Icon SwitcherLTRH
  1837. Read HePUBLIC 
  1838.    Define a global memory variable
  1839. Formats:    PUBLIC <mem_var_list>
  1840.         PUBLIC<mem_var> (<expN1> [, <expN2>])
  1841.          [, <mem_var> (<expN> [, <expN>]),...]
  1842. The PUBLIC command enables memory variables to be designated as global variables.  Such variables can be accessed and modified from any program that may be executed within the current FoxBASE+/Mac  session.
  1843. Memory variables that are created with the PUBLIC statement are initialized to 
  1844.  except for the PUBLIC variable FOX which is automatically initialized to 
  1845. .  The PUBLIC variable FOX enables commands and functions not supported by FoxBASE+/Mac to reside in a FoxBASE+/Mac program file.
  1846. It is important to note that any memory variables you wish to declare as PUBLIC memory variables, must be declared PUBLIC prior to assigning them a value.
  1847. If you assign a value to a memory variable and then declare it to be a PUBLIC memory variable, a syntax error will occur.
  1848. You may redeclare any PUBLIC memory variable to be PUBLIC.
  1849. Using the second format, a one or two dimensional array may be created.
  1850. See also:        DIMENSION, PRIVATE, DO, PARAMETERS
  1851. PUTFILE
  1852. Format:    PUTFILE([<expC1>][,<expC2>][,<expC3>])
  1853. The PUTFILE function displays the FoxBASE+/Mac save file directory dialog, which allows the user to name a file to be saved anywhere on disk.  This function then returns the fully qualified file name that the user specifies.
  1854. The optional argument <expC1> is the prompt string that will be displayed above the text box.
  1855. The optional argument <expC2> is the default file name that will be displayed in the text box.
  1856. The optional argument <expC3> is the default file extension that will be returned with the file name, unless a different extension was specifically given by the user. 
  1857. The name of the file given by the user is returned as the function's value.  If no file name is enteredby the user the default file name and extension are returned.   If the CANCEL button is pressed, hovever, the function returns the null string.
  1858. You can determine what file types are utilized by a particular application by reading its documentation or using one of many utilities and desk accessories which can display and/or change file types. 
  1859. odes are assigned to files by the application which creates them.  Examples: XLBN 
  1860.  Excel worksheet,  WDBN 
  1861.  MS Word document,  PICT 
  1862.  MacDraw document, PNGT 
  1863.  MacPaint document, F+DB 
  1864.  FoxBASE+/Mac database, F+PR 
  1865.  FoxBASE+/Mac program, etc.
  1866. You can determine what file types are utilized by a particular application by reading its documentation or using one of many utilities and desk accessories which can display and/or change file types.QUIT 
  1867.    Quit the FoxBASE+/Mac session
  1868. Format:    QUIT
  1869. The QUIT command is used to terminate the current FoxBASE+/Mac session and return control to the Finder.
  1870. A QUIT should always be performed to terminate the FoxBASE+/Mac session.  Turning the machine off without QUITting FoxBASE+/Mac may result in damage of open files and the loss of data.
  1871. data.
  1872. READ 
  1873.    Read in data from @..GETs
  1874. Format:    READ [SAVE] [OFF]
  1875. Execution of the READ command initiates full screen editing for all @ GET statements.  The cursor can be positioned to each of the @ GET locations allowing data to be entered into or edited within them.  Any data entered or changed is READ into the field or memory variable designated by the @ GET statement.  If READ is issued when no GET's are pending, FoxBASE+/Mac waits for the next keystroke and continues.
  1876. Data entered or edited with the READ command must be assigned to predefined memory variables or field names of a database file in USE.  Memory variables may be defined as null character strings (
  1877. ) or with the numeric value zero (0) in order to satisfy this requirement of the READ command.
  1878. All GET statements are automatically cleared following a READ command unless the SAVE option is specified.  If GETs are being SAVEd, be sure to issue a CLEAR GETS command before the memory pool allocated for the storage of GET information becomes full.  See Chapter 5 of the User's Guide for information on setting the GET pool size with the BUCKET parameter in CONFIG.FX.
  1879. If the OFF option is specified, the GET fields are not displayed with a border.
  1880. See also:        CLEAR GETS, CLEAR MEMORY, @
  1881. READKEY
  1882. Format:    READKEY( )
  1883. The READKEY function returns an integer value.  The integer value returned represents the key pressed by the user in order to exit a full-screen command.
  1884. The full-screen commands are the following; APPEND, BROWSE, CHANGE, CREATE, EDIT, INSERT, MODIFY, READ.
  1885. The integer returned will be between 0 and 36, or 256 and 292.  If the data remained unchanged during command execution, the value returned will be between 0 and 36.  If the data was modified during command execution, the value returned will be between 256 and 292.  In other words, if the data is modified during command execution, the value returned will increase by 256.
  1886. See also:        INKEY( ), ON KEY, READ
  1887. RECALL 
  1888.    Recall logically deleted records
  1889. Format:    RECALL [<scope>]
  1890.         [FOR <expL>] 
  1891.         [WHILE <expL>]
  1892. The RECALL command reactivates records that have been marked for deletion.  Any DELETE command can be undone by an identical RECALL command.
  1893. RECALL can be used to recover records provided a PACK or ZAP command has not been performed on the file.
  1894. Once the file has been PACKed or ZAPped, all records marked for deletion are lost forever.
  1895. See also:        DELETE, DELETED( ), PACK, SET DELETED, ZAP
  1896. RECCOUNT
  1897. Format:    RECCOUNT([<expN>)
  1898. The RECCOUNT function returns the number of records in the database in the currently selected work area.
  1899. If there is no active database file in the currently selected work area, RECCOUNT will return a zero.
  1900. All records in the active database will be counted regardless of the status of SET DELETED and SET FILTER.
  1901. RECCOUNT supports an optional argument which indicates the workarea to which the function is to be applied.  If the argument is omitted, the value for the currently selected workarea is returned.
  1902. See also:  RECSIZE()
  1903. RECNO
  1904. Format:    RECNO([<expN>])
  1905. The RECNO function returns the current record number as its value.  A record number is the physical position of a record in the currently selected database file.  Remember that when a database file is indexed, the records are not necessarily retrieved in record number order.
  1906. If the database is empty, RECNO( ) = 1 and EOF( ) = .T. 
  1907. RECNO will return one greater than the current number of records in the file if the record pointer is moved past the last record in the file.
  1908. RECNO supports an optional argument which indicates the workarea to which the function is to be applied.  If no database is open in the indicated workarea, 0 is returned.  If the argument is omitted, the value for the currently selected workarea is returned. 
  1909. After an unsuccessful SEEK in an indexed database, RECNO(0) uses 
  1910. soft seek
  1911.  logic to determine the record number to return.  In other words, it returns the number of the record that preceeds the SEEK expresion value with respect to the index.  If the SEEK expression value is beyond the last index entry, RECNO(0) returns 0
  1912. RECSIZE
  1913. Format:    RECSIZE([<expN>])
  1914. The RECSIZE function returns the size of the database record in the currently selected workarea.
  1915. RECSIZE returns 0 if there is currently no open database.
  1916. RECSIZE supports an optional argument which indicates the workarea to which the function is to be applied.  If the argument is omitted, the value for the currently selected workarea is returned.
  1917. See also:        RECCOUNT( )
  1918. REINDEX 
  1919.    Rebuild active indexes
  1920. Format:    REINDEX
  1921. The REINDEX command is used to update index files that were not active when key fields in the corresponding database were altered.
  1922. To REINDEX, enter the command:
  1923. USE <database> INDEX <obsolete index>
  1924. and then issue REINDEX.  This constructs an up-to-date index.
  1925. Any index which was initially created with UNIQUE set on, will also be rebuilt with UNIQUE status set on.
  1926. See also:        INDEX, SET INDEX, SET UNIQUE, USE
  1927. RELEASE 
  1928.    Release memory occupied by memory variables
  1929. Formats:    RELEASE <mem_var_list>
  1930.         RELEASE ALL [LIKE|EXCEPT <skel>]
  1931. These forms of the RELEASE command are used to clear variables from memory.
  1932. RELEASE <mem_var_list> purges only those memory variables contained in the list.
  1933. RELEASE ALL purges all memory variables currently contained in memory.
  1934. RELEASE ALL LIKE|EXCEPT <skel> is used to eliminate either all memory variables that are LIKE the skeleton specified, or all memory variables EXCEPT those that match the skeleton specified.  <skel> takes the same form that it does in the DISPLAY FILES format.
  1935. See also:        CLEAR MEMORY, RETURN, SAVE, STORE
  1936.  RELEASE MODULE- Release memory occupied by resource routine
  1937.  Format: RELEASE MODULE <resname>
  1938. The RELEASE MODULE command is used to remove a LOADed resource routine from memory.  This command removes the named resource from memory and releases the memory space occupied by the resource.
  1939.  See also: CLEAR MEMORY, LOAD, CALL
  1940. RELEASE MODULE, SET RESOURCE
  1941.      775 @ GET (Popups)                       805 @ GET (Radio Buttons)                747 @ GET (Scrollable List)              756 @ GET (Text Buttons)    RENAME 
  1942.    Rename a disk file
  1943. Format:    RENAME <old_file> TO <new_file>
  1944. The RENAME command is used to RENAME a file from its present name (<old_file>) TO a new name (<new_file>).  File extensions must be supplied for both <old_file> and <new_file> names.  Drive specifiers may be used if the files are not on the default drive.
  1945. The successful execution of the RENAME command requires that the <new_file> must not already exist and that the <old_file> must exist and not be open.
  1946. See also:        CLOSE, COPY
  1947. REPLACE 
  1948.    Update database records
  1949. Format:    REPLACE [<scope>] <field> WITH <expr> 
  1950.         [,<field2> WITH <expr2>...] 
  1951.         [FOR <expL>] 
  1952.         [WHILE <expL>]
  1953. For the database in USE, the REPLACE command REPLACEs the data which was previously in <field> WITH that which is in <expr>. Unless <scope>, FOR, or WHILE clause is specified, only the current record is affected by the REPLACE command.
  1954. Because the REPLACE command updates activated indexes with each execution of the command, it is important that REPLACEments never be performed on the key field of an indexed file when a <scope>,  FOR, or WHILE clause is in effect.
  1955. If the above warning is ignored, it is possible that only part of the intended replacements will actually occur.
  1956. In numeric fields, when the WITH expression value is longer than the actual field width, REPLACE will force it to fit as follows:
  1957.   Decimal places will be truncated and the remaining decimal portion of the field will be rounded.  If the value still does not fit,
  1958.   Scientific notation will REPLACE the field contents specified (precision will be lost).  Finally, if all else fails,
  1959.   Asterisks will REPLACE the field contents.
  1960. REPLICATE
  1961. Format:    REPLICATE (<expC>,<expN>)
  1962. The REPLICATE function repeats <expC> the number of times specified by <expN>.
  1963. The maximum length of the character string result is 254 characters.
  1964. This function is useful in the creation of bar graphs, and screen displays.
  1965.  REPORT-Produce a report
  1966.  Format:   REPORT [FORM <file>] [<scope>] 
  1967.         [FOR <expL>]
  1968.         [WHILE <expL>] 
  1969.         [TO PRINT[PROMPT]|TO FILE <file>]
  1970.         [ENVIRONMENT]
  1971. The REPORT command produces reports from report files created with FoxReport, the FoxBASE+/Mac report design utility.  These reports may be sent to the printer, to the screen or to an ASCII text file.
  1972. The default extension for report form <files> is .frx.  However, report forms created under previous versions of FoxBASE+/Mac and those imported from the DOS environment (.frm) can also be executed with this command.  (See note below for compatibility issues.)
  1973. A detail line for each record in the active database will be produced unless a <scope>, FOR or WHILE clause is specified, or a filtered index is in use or a FILTER is currently set.
  1974. If the TO PRINT clause is used, the report is sent to both the designated print device and the screen.  If it is omitted, the report is displayed on the screen only.  If the optional keyword PROMPT is also used, the FoxBASE+/Mac print dialog will come forward before the report begins printing.  The print dialog allows the user to select pages to print, number of copies, etc.
  1975. If the TO FILE option is used, the report will be sent to an ASCII text <file>.  The TO PRINT and TO FILE options are mutually exclusive and both options should not be specified in the same REPORT command.
  1976. The ENVIRONMENT option can be specified if a view file by the same name as the report form exists, and FoxBASE+/Mac will restore the environment settings stored in this file before the report is printed.  If a matching view file can not be found, FoxBASE+/Mac will continue processing the report without restoring the ENVIRONMENT.
  1977. @WARNING = NOTE ON FORMATS: Report forms of type .frm can be printed without change.  The PLAIN, HEADING, NOEJECT and SUMMARY commands associated with these reports will also be respected.
  1978.  See also: CREATE REPORT, MODIFY REPORT
  1979. RESTORE FROM 
  1980.    Restore memory variables from .MEM file
  1981. Format:    RESTORE FROM <file> [ADDITIVE]
  1982. The RESTORE command retrieves memory variables previously SAVEd in a 
  1983.  file and places them in the current memory.  When RESTORE is issued, any variables>memory variables currently in memory will be erased unless the ADDITIVE option is supplied.  If the number of memory variables being added with the ADDITIVE option exceeds FoxBASE+/Mac's memory variable limit, then as many memory variables as possible will be brought into current memory from the 
  1984.  file.
  1985. When the RESTORE command is issued from within a command 
  1986.  file, all the memory variables are RESTOREd as private memory variables.  If the RESTORE command is issued from the interactive command mode, then the memory variables are RESTOREd as public memory variables.
  1987. See also:        SAVE, RELEASE
  1988. RESTORE SCREEN    -Restore a screen image from memory
  1989. Format:        RESTORE SCREEN [FROM <mem_var>]
  1990. The RESTORE SCREEN command restores a screen image to the currently active output screen, replacing the screen's current contents.  The screen image can be RESTOREd from the screen buffer or from a memory variable.  The screen image being RESTOREd, of course, must have been previously SAVEd to the screen buffer or SAVEd or STOREd to a memory variable.
  1991. If RESTORE SCREEN is used without the optional FROM <mem_var> clause, then the screen image that's currently stored in the screen buffer will be used.
  1992. When the optional FROM <mem_var> clause is used, the screen image will be RESTOREd from the named <mem_var>, provided the <mem_var> exists and it is a Picture type variable.  This <mem_var> need not contain a screen image from the current FoxBASE+/Mac session; the screen image could be STOREd from a database field (of type Picture) to the <mem_var> or the image could be RESTOREd from a 
  1993.  memory variable save file.  Note, a screen saved under DOS is not compatable with a screen saved on the Macintosh and vice versa.
  1994. Use the SAVE SCREEN command to save the currently active output screen's image.
  1995. See also: RESTORE FROM, SAVE SCREEN, SAVE TO, SCREEN
  1996. RESUME 
  1997.    Resume execution of a suspended program
  1998. Format:    RESUME
  1999. The RESUME command causes a SUSPENDed program to continue execution.
  2000. The SUSPENDed program will be restarted at the line where execution was SUSPENDed.
  2001. Use of the SUSPEND and RESUME commands is a valuable debugging aid for developers.  While program execution is suspended, the current status of the FoxBASE+/Mac environment may be examined to determine why problems are occurring.
  2002. It is helpful to open an unused output screen prior to executing any commands so that any output generated during program suspension will not interfere with future screen I/O.  
  2003. See also:        CANCEL, RETURN, SUSPEND
  2004. RETRY 
  2005.    Re-execute the previous command
  2006. Format:    RETRY
  2007. The RETRY command returns control to the calling program, and the line last executed in that program is re-executed.  The RETRY command is similar to the RETURN command except that the RETURN command causes the next line in the calling program to be executed rather than re-executing the last line.
  2008. RETRY is especially useful when a set of commands should be repeated until a certain condition is true, or in handling>error handling routines.
  2009. See also:        RETURN
  2010. RETURN 
  2011.    Return control to a calling procedure
  2012. Format:    RETURN [TO MASTER | <expr>]
  2013. The RETURN command terminates execution of a command file and RETURNs control to one of the following: the calling file, interactive mode, or to the Finder.
  2014. Use of a RETURN command at the end of a program is optional, since an implicit RETURN is automatically executed following the last statement of a program file.
  2015. All PRIVATE memory variables are released when a RETURN is executed.
  2016. If the TO MASTER option is specified with this command, control is returned to the highest level calling program.
  2017. If the program is to be referenced as a user-defined function, RETURN must be followed by <expr>.  If a program that is referenced as a user-defined function is also used as a DO <file>, the RETURNed expression is ignored. 
  2018. See also:        UDF's, PRIVATE, PUBLIC
  2019. RIGHT
  2020. Format:    RIGHT(<expC>,<expN>)
  2021. The RIGHT function returns the rightmost portion of a character string.  The numeric expression (<expN>) specifies the number of characters that are returned.
  2022. If <expN> is less than or equal to zero, the null string will be returned.
  2023. If <expN> is greater than the length of <expC>, the entire character string will be returned
  2024. See also:  LEFT(), LTRIM(), RTRIM(), SUBSTR(), TRIM()
  2025. ROUND
  2026. Format:    ROUND(<expN1>,<expN2>)
  2027. The ROUND function allows you to round a numeric expression by a specified number of decimal places.  <expN1> is the number you wish to round.  <expN2> is the number of decimal places you wish to retain.
  2028. If <expN2> is negative, the rounded number returned will be a whole number containing <expN2> trailing zeros.  For instance, if <expN2> is<N>  -2, the result is rounded to even hundreds.
  2029. See also:  INT()
  2030. Format:    ROW([1])
  2031. The ROW function returns the current row location of the cursor.  If the optional argument 1 is specified, the row postion is expressed in pixels.
  2032. This function is useful for relative screen addressing within command files.
  2033.  See also:        @, COL, PCOL( ), PROW( )
  2034. RTRIM
  2035. Format:    RTRIM(<expC>)
  2036. <expC> is evaluated and the value returned is the same character string with all trailing blanks removed.  If <expC> is composed entirely of blanks, RTRIM returns the null string.
  2037. The RTRIM function is identical to the TRIM function.
  2038. See also:        LTRIM( ), TRIM( )
  2039. SAVE TO 
  2040.    Save memory variables to a .MEM file
  2041. Format:    SAVE TO <file> 
  2042.         [ALL LIKE|EXCEPT <skel>]
  2043. The SAVE command stores current memory variables in a variable files>memory file.
  2044. The default extension is 
  2045.  for a memory file.
  2046. If the ALL LIKE <skel> option is included, only those memory variables which are LIKE the skeleton are SAVEd.  If the ALL EXCEPT <skel> option is included, all memory variables EXCEPT those that match the skeleton are SAVEd.
  2047. In the <skel>, a question mark (?) refers to any single character and an asterisk (*) refers to zero or more occurrences of any character.
  2048. Use the RESTORE FROM command to load memory variables SAVEd TO a memory file back into memory.
  2049. See also:        RESTORE, RELEASE, SET SAFETY
  2050. SAVE SCREEN- Save a screen image to memory
  2051.  Format:   SAVE SCREEN [TO <mem_var>]
  2052.         [AT <expN1>,<expN2>]
  2053.         [SIZE <expN1>,<expN2>] [PIXELS]
  2054. The SAVE SCREEN command saves the currently active output screen's image to the screen buffer or, optionally, to a memory variable.  Once SAVEd, the screen image can later be RESTOREd.
  2055. If the optional TO <mem_var> clause is not used, the screen image is saved to the screen buffer.
  2056. When the optional TO <mem_var> clause is specified, the screen image is saved to the named memory variable.  This memory variable can then be SAVEd TO and RESTOREd FROM a memory variable (".mem") save file, just like all other memory variables.  And, since it is also a valid FoxBASE+/Mac data type (Picture) it can REPLACE a Picture type field in a FoxBASE+/Mac database.
  2057. Portions of the current output screen can be SAVEd by using the AT and SIZE clauses.  The AT clause indicates the upper-left corner of the area to be saved and the SIZE clause defines the length and width of the area.  Both clauses assume that <expN1> is the row coordinate and that <expN2> is the column coordinate.  Coordinate values are processed in terms of characters unless the keyword PIXELS is used.
  2058. Use the RESTORE SCREEN command to replace the currently active output screen's image with a previously SAVEd screen.
  2059. See also: RESTORE FROM, RESTORE SCREEN, SAVE TO, SCREEN
  2060. xxPxPxx=
  2061. SCATTER 
  2062.    Move data from database record to array
  2063. Format:    SCATTER [FIELDS <fieldlist>] TO <array>
  2064. The SCATTER command moves data from the current database record into a memory variable array.  The fields in the record are transferred, starting with the first field specified, into the array filling in each array element sequentially.  If the FIELDS clause is omitted, all fields are transferred.
  2065. If the array has more elements than the number of fields to be transferred, trailing array elements remain as they were before the SCATTER operation started.  If no such array exists or the array size is insufficient for the number of fields, a new array is automatically created and DIMENSION'ed.
  2066. The data types of array elements are made the same as those of the corresponding fields in the record.
  2067. Memo and picture fields are ignored during the operation of SCATTER.
  2068. See also:        GATHER, DIMENSION
  2069. SCREEN 
  2070.    Specify and design an input/output screen 
  2071. Format:    SCREEN [<expN>]
  2072.         [HEADING <expC>]
  2073.         [TYPE <expN>] [LOCK]
  2074.         [AT <expN1>, <expN2>]
  2075.         [SIZE <expN>, <expN> [PIXELS]] 
  2076.         [FONT <expC>, <expN>]
  2077.         [COLOR <code>]
  2078.         [OFF] 
  2079.         [TOP] 
  2080.         [DELETE]
  2081.         [FIXED]
  2082. FoxBASE+/Mac has nine available screens in which input/output can be performed.  Use the SCREEN command to create, modify, move, hide, or reveal these input/output screens.
  2083. Screen 1 is the default output screen when FoxBASE+/Mac is started.  
  2084. The SCREEN command, with <expN>, specifies which of the nine available screens is to be selected.  If <expN> is omitted, the current screen is the one that is selected.
  2085. In interactive mode, the selected screen is brought to the front.  Output is then directed to this screen whether or not a program is running.
  2086. When the HEADING clause is used, the title of the specified screen is set to the value of <expC>. If <expC> is a literal character string or macro, it must be contained within any of the standard string delimiters.  If the HEADING clause is not used, the screen's HEADING remains as it was.  If you are defining a new screen and do not use the HEADING clause, a default title of SCREEN n is assigned -- where n represents the screen's number.
  2087. FoxBASE+/Mac has five screen types in addition to the default output screen TYPE 0.  The standard screen TYPE is resizable, moveable, and has both a zoom box and a close box.  SCREEN 1 has none of these characteristics and is useful in the creation of dialogs.  Screen TYPE 3 is a plain box with no shadow.  It can not be resized, moved, and has neither a zoom box or a close box.  Screen TYPE 4 is much like screen TYPE 3 except that it has a shadow.  The final screen TYPE, 16, has rounded corners and a close box.  It does not have a grow region.  Additionally, the keyword LOCK prevents any screens from being closed other than programatically.
  2088. When the AT clause is used, the screen's upper lefthand corner is located AT the vertical and horizontal coordinates specified by <expN1>, <expN2>.  These coordinates are always expressed in pixels.
  2089. The SIZE clause allows you to specify the size of the screen.  If the keyword PIXELS is present, the <expN>s are interpreted in terms of PIXELS; otherwise, the <expN>s represent, respectively, the number of rows and columns in the screen.  The size of the rows and columns is determined by the size of the lowercase n in the current font, point size, and style.
  2090. In either case, the maximum number of rows and columns that will be displayed on the screen is determined by the current font settings.  In addition, the actual size of the screen that is created is clipped to fit on the physical screen, when positioned as specified in the AT clause.
  2091. Using the SIZE clause is the only  way to change the underlying bitmap of the screen.  When font, point size, and/or style are changed in an existing screen, the screen is not resized to reflect any changes.  The number of rows and columns may then be different from the original SCREEN statement's SIZE, because the underlying bitmap remains unchanged.
  2092. When the FONT clause is used, the default font for all output sent to the screen will be the font style <expC> and/or size <expN> specified. 
  2093. The font name <expC> must be enclosed in standard character string delimiters, and the point size <expN> must be separated from the font name with a comma.  Either the font name, or the point size, or both may be specified.  If the font name is omitted, the comma preceding the point size is still required.  If either value is omitted, the omitted attribute will be the same as the current screen font.  Using the FONT clause without a font name or point size will result in an error. 
  2094. A typographical style may also be specified in addition to the font and point size by adding a specific value, or any combination (sum) of the specific values, to the point size. Refer to the table in Appendix D of the manual for a complete list of the values.
  2095. Foreground and background colors can be specified with the COLOR clause.  If no COLOR clause is specified then the text is displayed in the current screen color.
  2096. Color is represented by a character string expression, therefore must be enclosed in quotes.  This is different from the SET COLOR command which does not allow quotes around the color codes.
  2097. Standard and enhanced display colors are both determined by selecting a pair of color codes separated by a slash (/).  Refer to the table in Appendix D in the User's Guide for a complete list of the values.
  2098. The addition of the OFF clause causes the named screen to be hidden.  The data that is currently visible on the screen is retained, and the data will reappear if the screen is re-enabled later.
  2099. The use of the TOP clause causes the specified screen to be brought to the front and placed on TOP of other existing screens. 
  2100. The use of the DELETE clause causes the specified screen to be deleted.  This command not only removes the screen from the desktop, but it also releases all computer memory that is used by that screen.
  2101. The SCREEN command supports the optional keyword FIXED.  When a FIXED screen is created, FoxBASE+/Mac will not allow the user to interactively bring another window to the front by clicking or by choosing from the WINDOW menu.  A FIXED screen can be created only under program control and the program must provide a mechanism by which a user response will end the effect of the FIXED option (e.g., clicking a button).  The FIXED option is useful for creating modal dialogs.
  2102. CommandO
  2103. SCROLL    - Scroll the screen
  2104. Format:        SCROLL [PIXEL] <coord1>,<coord2>,<expN1>,<expN2>
  2105. This command causes a rectangular portion of the screen to be scrolled up or down.  If the PIXEL clause is present, the coordinates are expressed in pixels.
  2106. <coord1>    The screen coordinates of the upper-left corner of the rectangle.
  2107. <coord2>    The screen coordinates of the lower-right corner of the rectangle.
  2108. <expN1>    How many lines the rectangular area is to be scrolled vertically.  If negative, the area is scrolled down <expN1> lines, otherwise it is scrolled up.
  2109. <expN2>    How many columns the rectangular area is to be scrolled horizontally.  If negative, the area is scrolled to the left <expN1> lines, otherwise is is scrolled to the right.
  2110. SEEK 
  2111.    Search an indexed database
  2112. Format:    SEEK <expr>
  2113. The SEEK command searches an indexed database for the first occurrence of a record whose index key expression matches the specified <expr>.
  2114. Single quotes (` '), double quotes (
  2115. ) or square brackets ([ ]) must be used to enclose a character string <expr>.
  2116. SEEK is similar to the FIND command; however, SEEK can be used to search for matches on general expressions.
  2117. See also:        FIND, INDEX, USE
  2118. SELECT 
  2119.    Activate a workarea
  2120. Format:    SELECT <workarea|alias>
  2121. The SELECT command is used to determine which of the 10  different workareas is currently active.  Workarea 1 is active by default.  A workarea may be SELECTed by specifying the workarea number (1 through 10) or letter (A through J).  Once a database is opened in a workarea, the workarea may also be SELECTed by the  alias name.
  2122. The SELECT command also permits zero as an argument. If zero is specified, the lowest-numbered unused workarea is SELECTed.
  2123. Database field variables can be accessed in any workarea.  The following format should be used when accessing fields which are in a workarea other than the currently SELECTed workarea:
  2124. <alias> -> <field>
  2125. The record pointer is normally moved only in the current workarea.  Refer to the SET RELATION command for details on moving the record pointers in multiple workareas simultaneously.
  2126. See also: SET RELATION
  2127. ermits zero as an argument. If zero is specified, the lowest-numbered unused workarea is SESELECT
  2128. Format:    SELECT( )
  2129. The SELECT function returns the number of the currently selected workarea.
  2130.    Invoke menu-driven VIEW facility
  2131. Format:    SET
  2132. The View window is one of the most useful FoxBASE+/Mac tools.  It provides an easy way to open database files, to establish relations, or to set or change many FoxBASE+/Mac options.  Whenever you're working interactively with FoxBASE+/Mac, think of View as the master control panel for all interactive operations.
  2133. You activate the View window by selecting View from the Window menu, by typing SET or SET VIEW ON into the Command window or by executing SET VIEW ON from a FoxBASE+/Mac program file.
  2134. Please refer to Chapter 4  in the User's Guide for an extensive explanation of the view window.
  2135. SET ALTERNATE TO  <file> or SET ALTERNATE OFF|ON
  2136. SET ALTERNATE TO [file].  If [file] is omitted, this format closes the current alternate file.  The default extension is .TXT for the alternate file.
  2137. SET ALTERNATE ON|OFF is used to enable or disable screen output to the output file created by the SET ALTERNATE TO [file] command. ON enables output; OFF disables output.
  2138. SET BELL ON|OFF
  2139. This SET command enables (ON) or disables (OFF) the sounding of the terminal bell when the end of a field is reached and passed, or when invalid data is entered.
  2140. SET CARRY OFF|ON
  2141. This flag enables or disables the ability to CARRY data forward from the previously entered record to the new (present) record when using the full-screen APPEND or INSERT facility.  ON enables the facility; OFF disables it.
  2142. An INSERTed record, which has been carried forward, will not be saved unless it is modified in some way.
  2143. SET CENTURY OFF|ON
  2144. This SET command allows you to determine how the year is to be displayed with regard to date variables and functions.  ON indicates a 4 digit year format.  OFF indicates a 2 digit year format (which assumes the 20th century for date calculations).
  2145. When SET CENTURY is ON, the date display is 10 characters long; when it is OFF, the display is 8 characters.
  2146. SET CLEAR OFF|ON
  2147. The SET CLEAR command controls whether or not the screen is to be cleared when executing SET FORMAT TO <filename>. 
  2148. This SET command gives developers the ability to build data input screens by superimposing a FORMAT screen on top of a background screen.
  2149. round screen.  SETting CLEAR OFF before QUITting FoxBASE+/Mac enables a "sign-off" screen to be displayed even after the system is exited.
  2150. SET COLOR TO [<standard> [,<enhanced> ]]
  2151. The SET COLOR command allows a variety of screen attributes to be defined for the use of color monitors and also for the use of monochrome monitors.
  2152. SET COLOR TO resets the screen to the default colors of black and white.
  2153. SET COLOR TO <standard> [,<enhanced>] format is used to set attributes for color and monochrome monitors.  Standard and enhanced displays are determined by selecting a pair of the following color codes separated by a slash (/). 
  2154. Please refer to the color table in Appendix D of the User's Guide for a complete list of all available color codes.
  2155. (color monitors only) is represented by a single color code.
  2156. An asterisk (*) is used to denote blinking and a plus sign (+) denotes high intensity.
  2157. On monochrome monitors, U is the attribute code for underlining and I is the attribute code for inverse video.
  2158. The Blank (X) color option is useful when specifying entry of passwords.
  2159. SET CONFIRM OFF|ON
  2160. Normally, when the last character in a full-screen input field is entered, the input operation is automatically terminated.  The cursor then skips to the next field, sounding the bell if BELL ON has been selected.
  2161. The default mode (CONFIRM is OFF) is convenient for fields in which the data entered is always the same length.  For example: zip codes, social security numbers, telephone numbers, etc.
  2162. If CONFIRM is turned ON, then the user is required to press a terminating key (CR, Pg Up, etc.) to indicate, emphatically, that input into the field is complete.  When data of varying lengths is to be entered into a field, this mode helps to insure the integrity of the data being entered.
  2163. SET CONSOLE ON|OFF
  2164. ON sends all output to the screen.  OFF inhibits output to the screen.
  2165. The SET CONSOLE command does not affect @ 
  2166.  SAY or @ 
  2167.  GET commands.  Output from the @ 
  2168.  SAY command is controlled by the DEVICE setting.
  2169. SET DATE <date type>
  2170. This command SETs the date format for date expressions.  A list of the available date types and formats follows:
  2171.         AMERICAN    mm/dd/yy
  2172.         ANSI            yy.mm.dd
  2173.         BRITISH        dd/mm/yy
  2174.         ITALIAN        dd-mm-yy
  2175.         FRENCH        dd/mm/yy
  2176. SET DECIMALS TO <expN>
  2177. This SET command determines the minimum number of decimal places that are to be displayed as the result of numeric functions and calculations.  SET DECIMALS affects division, EXP( ), LOG( ) and SQRT( ) display.
  2178. The decimal display default is 2 places.
  2179. Other decimal display is determined based on the nature of the constants and calculations involved.
  2180. SET DEFAULT TO [<drive>]
  2181. This command instructs FoxBASE+/Mac to regard the specified drive as the default disk drive for future I/O operations.
  2182. FoxBASE+/Mac retains command files in memory for subsequent execution; therefore, the command file currently stored in memory will be executed regardless of a change in the default drive specification.
  2183. To clear a command file currently stored in memory, the CLEAR PROGRAM command should be executed.  The default drive specification will be respected once a CLEAR PROGRAM command has been executed.
  2184. cuted.
  2185. SET DELETED OFF|ON
  2186. When the ON option is selected, all commands which select records using a scope will ignore records which have been marked for deletion.  Commands that operate on the current record or that have a scope of RECORD <n> disregard the DELETED setting.
  2187. The OFF option permits such commands to access all records, whether or not they are marked for deletion.
  2188. INDEX and REINDEX include all records within the database file regardless of SET DELETED status.
  2189. RECALL ALL will not recall any records if SET DELETED is ON.
  2190. SET DEVICE TO SCREEN|PRINT
  2191. This SET command controls display of output from @ 
  2192.  SAY commands.  The output may be sent to the SCREEN or the PRINTer.
  2193. When the <coord> values indicated in the @ 
  2194.  SAY command are lower than those of the previous @ 
  2195.  SAY command, a page eject results.
  2196. SET DOHISTORY OFF|ON
  2197. SETting DOHISTORY ON enables commands from program files to be stored in the history list as they are executed.  These commands can then be edited and executed from the command window in the same manner as history commands that were entered from interactive command mode.
  2198. Though SETting DOHISTORY ON can provide developers with  valuable debugging assistance, it will substantially slow down program execution and should be turned OFF in a distributed application system.
  2199. SET ECHO OFF|ON
  2200. If ECHO is ON, each program source line is displayed in the trace window as it is executed.  ECHO OFF disables the output of this information.
  2201. SET ECHO ON is disabled under the runtime version of FoxBASE+/Mac.
  2202. tions.
  2203. SET ECHO ON is disabled under the runtime version of FoxBASE+/Mac.
  2204. WARNING: Suggestion to FoxBASE+/Mac Runtime Users: As an 
  2205. additional aid in source code protection, we strongly recommend that you have the SET ECHO OFF command as the very first line of all of your applicaSET ESCAPE ON|OFF
  2206. OFF disables use of the Esc (Escape) key or (Command .) to interrupt command execution. ON allows command execution to be interrupted through the use of the Esc key.
  2207. If you press escape during the execution of a command while in interactive mode, an alert box will appear and ask if you want to Interrupt this command? If so simply select Yes if you want to interrupt the command and return to interactive mode or No if you would like to continue execution.
  2208. If you press escape during command file execution, processing completes on the line currently executing and an alert will appear that gives the user three options:
  2209. Cancel: 
  2210.     Immediately stop execution of the program and return to the interactive mode. This is the default choice.
  2211. Suspend:
  2212.     Pause execution of the program and return to the interactive command mode. This choice is useful when debugging. Resume (from the Program Menu or command mode) or Command-R restarts the program at the point where it was suspended.
  2213. Ignore:
  2214.     Ignore the fact that escape was pressed and continue execution where it left off without skipping any lines of the program.
  2215. SET EXACT OFF|ON
  2216. If EXACT is OFF, then two strings can be compared even if they have different lengths.  That is, if the strings match up to the point where one or the other is exhausted, then they are considered equal.  If EXACT is ON, strings must match character for character and be of the same length to be considered equal.
  2217. SET FIELDS OFF|ON  
  2218. SET FIELDS TO [<fieldlist>|ALL]
  2219. If SET FIELDS is OFF then all the fields within the currently USEd databases are accessible by the user.  If SET FIELDS is ON then only those fields which have been specified in a SET FIELDS TO command may be accessed.
  2220. SET FIELDS TO (without a <fieldlist> or ALL option specified) removes all the fields from <fieldlist> which are present in the currently active database.
  2221. SET FIELDS TO ALL adds all the fields within the currently active database to the <fieldlist>.
  2222. SET FIELDS TO <fieldlist> specifies which fields may be accessed in the currently USEd database files.  Consecutive SET FIELDS TO <fieldlist> commands may be executed to add fields to those which are currently accessible.
  2223. SET FIELDS TO <fieldlist> automatically SETs FIELDS ON.
  2224. An alias must be specified with a field name in the following circumstances:
  2225.   When referring to a field in a database not USEd in the currently selected workarea.
  2226.   When the field names are the same in related files.
  2227. stances:
  2228.  When referring to a field in a database not USEd in the currently selected workarea.
  2229.  When the field names are the same in related files.
  2230. SET FILTER TO [<expr>]
  2231. The SET FILTER command is used to designate a group of records within the active database which meet the condition indicated by <expr>.  Once this SET command is executed, only those records which meet the condition will appear to be present in the database.  All FoxBASE+/Mac commands which access the USEd database respect the SET FILTER condition.
  2232. SET FILTER TO (without optional <expr>) turns off the conditional restrictions on the active database.
  2233. A separate FILTER may be set for each database file in USE.
  2234. It should be noted that a filter is not activated until the record pointer is moved in a database file.
  2235. SET FIXED OFF|ON
  2236. This SET command determines whether a fixed number of decimal places are to be used for numeric display.
  2237. If SET FIXED is OFF, the number of decimal places in the outcome depends on the specific constants, variables, and operators involved in an expression.  Database fields are shown with the declared number of decimal places.
  2238. If SET FIXED is ON, the number of decimal places displayed is determined by the SET DECIMALS command.  The default number of decimal places is 2 for numeric display.
  2239. mation, and is protected by federal copyright laws, the         |
  2240.  |     violation of which can result in civil damages and criminal pro-     |
  2241.  |     secution.  Access to these source materials is granted only by       |
  2242.  |     explicit written permission from Fulton Associates.                  |
  2243.  |                                                                          | 
  2244.  +--------------------------------------------------------------------------+
  2245. #include "global.h"
  2246. #include "scanner.h"
  2247. #incluSET FORMAT TO [<file>]
  2248. This SET command accesses custom-designed display formats for use with APPEND, EDIT, INSERT, READ, etc.
  2249. If <file> is omitted from this SET command, the currently active format file is deactivated.
  2250. The default extension for <file> is .FMT.
  2251. Multi-page format files may be created by placing a READ command at the end of each page.  There is a maximum of 128 screens per format file.  PgUp and PgDn keys may then be used to move from screen to screen within the format file. 
  2252. en using RSET FRAME TO [<expN1>,<expN2>][CLIP]
  2253. The picture data type is stored in a .dbt file, much like a memo field is.   Picture data can be displayed to the screen with a SAY command, just like other database fields.  There is a command that allows you to determine the size at which these pictures will be displayed. 
  2254. This command is used to establish the frame in which a picture or portion of one) will be displayed on the screen.  It's then a simple matter of SAYing the picture in the frame.
  2255. <expN1> represents the height of the frame, while <expN2> represents the width.  Both of these numeric expressions are evaluated and processed in terms of pixels.  If the height and width are not explicitly given, the size of the frame defaults to a height of 32,767 pixels by a width of 32,767 pixels.
  2256. The pictures, stored and retreived from a FoxBASE+/Mac database, are automatically scaled to fit the size of the frame that you create  unless the optional keyword CLIP is used. 
  2257. When CLIP is used, the picture that is displayed in the frame is a CLIPping from the original.  This CLIP feature allows you to display a portion of the original picture.  Clipping begins at the upper left-hand corner of the original and continues to the size specified in the SET FRAME TO command.
  2258. SET FUNCTION <expr> TO <char_str>|<expC>
  2259. This SET command allows you to assign a character string (254 characters maximum) to a function key.  FoxBASE+/Mac translates semicolons (;) occurring in the string into carriage returns.
  2260. The value of <expr> may range from F2 to F15, inclusive.  If you do not have an extended keyboard, CTRL-2 through CTRL-0 are equivalent to F2 through F10 respectively.
  2261. Although the F1 function key may not be reassigned using this method, it may be designated as a 
  2262. hot key
  2263. , thereby circumventing its normal function.
  2264. The current function key assignments can be displayed with the DISPLAY STATUS command or by selecting the Keys panel of the View window.  Unless function keys values are assigned with SET FUNCTION, they have default values.  Please refer to Chapter 3 in the User's Guide for a list of the default function key values.
  2265. SET HEADING ON|OFF
  2266. This SET command determines whether the column titles will be displayed for each field in DISPLAY, LIST, SUM, and AVERAGE commands.
  2267. SET HELP ON|OFF
  2268. SET HELP TO  [<filename>]
  2269. SET HELP ON|OFF enables/disables the ability to invoke HELP while executing a program.  HELP is always SET ON in interactive mode.
  2270. SET HELP TO <filename> indicate which file will be used to provide HELP.  SET HELP TO <filename> closes the current help file and opens a new file to used for help.  To restore the help database to the standard, just issue SET HELP TO with no <filename>.  For a complete example and explanation of defining your own help system, please refer to Chapter 6 in the User's Guide, the section on Context-Senstive Help.
  2271. SET HISTORY ON|OFF
  2272. SET HISTORY ON|OFF determines whether commands entered in interactive command mode are stored in the history list.
  2273. With SET HISTORY ON, all commands entered in the command window are stored in the history list and may later be recalled, edited, and re-executed. 
  2274. SET HISTORY OFF inhibits the storage of commands for history recall.  However, commands that are executed prior to turning history off may still be recalled for editing and re-execution.
  2275. SET INDEX TO [<filelist>]
  2276. This SET command activates one or more index files for the current database file.  These indices are automatically updated as records are added to or deleted from the database.  The first index listed is the primary index which controls the order in which records are accessed.  The SET ORDER TO  command may be executed to change the order of index files in <filelist>.
  2277. A maximum of 7 index files may be enabled for a database at one time.
  2278. If <filelist> is omitted, all active indices are deactivated for the database in USE in the current workarea.
  2279. SET INTENSITY ON|OFF
  2280. The SET INTENSITY command determines whether the enhanced screen attribute is used for the display of input fields during full screen operations.screen operations;Editing>  The enhanced screen attribute is normally black on white, but it may be modified with the SET COLOR command.
  2281. When INTENSITY is ON, the enhanced screen attribute is used to highlight input fields; when INTENSITY is OFF, the normal screen attribute is used.
  2282. SET MARGIN  [PIXELS] TO <expN>
  2283. This command SETs the left-hand printer margin to <expN> and affects all output directed to the print device.  <expN> may also be expressed in pixels.  Simply supply the optional clause PIXELS to achieve this.  The default is 0 for the left-hand margin.
  2284. f08    Df$r
  2285. 08    RJx
  2286. `vaP Pp
  2287. `@a" P
  2288.  SET MEMOWIDTH TO <expN>
  2289. This SET command determines the width of memo field output for LIST and DISPLAY and the default width for REPORT.
  2290. The default is 50 for memo field output width.
  2291. SET ODOMETER  TO <expN>
  2292. SET ODOMETER is used to change the reporting interval used by TALK.  The default reporting interval is 100.
  2293. SET ORDER TO [<expN>]
  2294. This SET command determines which previously activated index file is to be the controlling index for the database in the current workarea.
  2295. <expN> references a position corresponding to an index file in the index list as it was specified in the SET INDEX TO or USE 
  2296.  INDEX commands.  The <expN> may range from 0 to 7 depending on how many indices are currently enabled.
  2297. If <expN> is set to 0 then the index control is turned off without disabling the index files.  The database is then accessed in record number sequence.  SET ORDER TO (without <expN>) will also turn all index control off.  SET ORDER TO 0 allows enabled indices to continue to be updated without a performance penalty for tracing the index structure.
  2298. The record pointer does not move when you execute a SET ORDER command; and, therefore, the new controlling index does not take effect until the record pointer is moved.
  2299. SET PATH TO [<pathlist>]
  2300. This command is used to designate a list of folders which FoxBASE+/Mac will search for files not found in the current working folder.
  2301. The folders named in <pathlist> should be separated with commas or semicolons.
  2302. It should be noted that FoxBASE+/Mac retains command files in memory for subsequent execution; therefore, the command file currently stored in memory will be executed regardless of a change in the <path_list> specified.  To clear a command file currently stored in memory, the CLEAR PROGRAM command should be executed.  The current path specification will always be respected after a CLEAR PROGRAM command is executed.  See CLEAR PROGRAM for additional information.
  2303. rmation.
  2304. SET PRINT OFF|ON
  2305. The ON option enables output to the printer.  OFF disables printer output.  Output that is formatted with @...SAY command is not necessarily routed to the printer when PRINT is set ON.  To direct @...SAY commands to the printer, the SET DEVICE TO PRINT command must be used.
  2306. SET PRINTER TO [<device>|<file>]
  2307. FoxBASE+/Mac allows PRINT to be SET TO either a device or a file.  If PRINT is SET TO a file, then the file must be identified by a fully qualified pathname.
  2308. If PRINT is SET TO a printer device, then all output is directed to <device>.
  2309. Format:        SET PRINTER TO <COM1|COM2>
  2310.             [,<baud>][,<parity>][,<databits>]
  2311.             [,<stopbits>][,<handshake>]
  2312. The SET PRINT TO command allows faster printing and customization to a specific printer. 
  2313. Set printer to the modem port by specifying COM1, or to the printer port by specifying COM2.     The optional arguments can be specified if the default values (baud, parity, etc.) do not match the settings of your particular printer. The default settings are the same as those for an ImageWriter.  They are: 9600 baud, no parity, 8 databits, 1 stopbit and hardware handshake.  Consult the documentation for your printer for the appropriate settings.  Below are the valid settings that can be specified to match your printer.
  2314. <baud>        300,600,1200,1800,2400,3600,4800,7200,9600,19200,57600
  2315. <parity>        N (none), O (odd), E (even)
  2316. <databits>    5,6,7,8
  2317. <stopbits>    1,1.5,2
  2318. <handshake>    H (hardware CTS), S (Software Xon/Xoff), N (none)
  2319. SET PROCEDURE TO [<file>]
  2320. This SET command opens the procedure <file> specified.
  2321. A .PRG extension is assumed if one is not specified in <file>.
  2322. Only one procedure file may be open at a time.
  2323. SET PROCEDURE TO (without <file>) closes any currently open procedure file.
  2324. SET RELATION OFF INTO <alias>
  2325. This SET command breaks an established relation between two open databases.  One database is the currently active database and the other is the related database.  The second database is identified by the INTO <alias> clause.  
  2326. SET RELATION TO [<expr> INTO <alias>] 
  2327.     [,<expr> INTO <alias>] 
  2328. [,<expr> 
  2329.     INTO <alias>] [ADDITIVE]
  2330. This SET command links two open database files by evaluating the specified <expr> to either an index key or a record number.  One database is the currently active database and the other is an open database in another workarea.  The second database is identified by the INTO <alias> clause.  Each time the record pointer in the SELECTed database is moved, the record pointer in the related file is moved to the corresponding record.  If a matching record cannot be found in the related database, the record pointer for that database is positioned to the end of file.
  2331. The two methods of relating databases are described below:
  2332.   Indexed <alias> files - When the <alias> file is indexed, it must be possible to evaluate the <expr> using constants and fields in the currently SELECTed database to determine the corresponding index key for the second database.  The <alias> database must be indexed by the <expr> (which may be a character, numeric, or date expression); otherwise, an error is generated.
  2333.   Unindexed <alias> files - When the <alias> file is not indexed, <expr> must be numeric.  The expression is evaluated for the current record and the result is used as a record number in the related database.
  2334. A  keyword, ADDITIVE, may be specified with the SET RELATION TO 
  2335.  command.  When the ADDITIVE keyword appears, any pre-existing relations will remain intact.
  2336.  will remain intact.
  2337.  SET RESOURCE TO <filename> [NOMODIFY]
  2338. The SET RESOURCE TO command allows you to specify a different picture file than the default FoxUSER file, which is opened when FoxBASE+/Mac is initially started.  With the NOMODIFY clause, the resource file will be opened for read-only use.  This allows multi-user applications, running on a network, to share a resource file.  To use this feature, all users must open the file with the NOMODIFY clause..  
  2339. SET SAFETY ON|OFF
  2340. This SET option allows the FoxBASE+/Mac file safety protection facility to be turned on or off.
  2341. With SAFETY set ON, the user is warned before execution of any commands which might overwrite or destroy a database file.
  2342. With SAFETY set OFF, the user is not warned when files may be overwritten or destroyed.
  2343. SET SCREEN TO <expN1>,<expN2>
  2344. This SET option allows the size of rows and columns to be set independently of the font, size and style settings within the currently active output screen.  <expN1> indicates the number of pixels that each row should be in height, and <expN2> indicates the number of pixels that each column should be in width.  These settings are then used to position output when using <row,col> addressing.  Both values may contain fractional amounts, such as 7.25.
  2345. SET STATUS ON|OFF
  2346. With STATUS set ON,  the status window is opened.
  2347. The information displayed on the status line includes the working folder, active database file, record pointer position, and the number of records in the file. The status line is updated each time a command is executed which changes the status information.
  2348. SET STEP OFF|ON
  2349. This SET command is one of the tools available for debugging application programs.
  2350. When the SET STEP ON command is issued or  Step is choosen from the program menu an implicit ESCAPE is also executed.  This in turn causes the trace window to be invoked.  It is in the trace window the process of STEPping through a program takes place.  The Trace window appears:  
  2351. The two buttons in the lower right hand corner are the means for STEPping through a program.  At this point you may press resume to STEP through program one line at a time.  At any point in time select another window or screen to check and view the environment.  Notice the buttons will 
  2352. disappear
  2353.  when the Trace window is deselected.  When you want to continue STEPping simply reselect the Trace window and the buttons reappear.  To stop execution of the program and return to interactive mode simply press the cancel button.  
  2354. For further information on the development environment refer to SUSPEND, SET ECHO and RESUME. 
  2355. his chapter.SET STRICT OFF/ON
  2356. STRICT determines whether the Tab and Return keys move the user through a record in Macintosh or DOS fashion.  With STRICT set ON, pressing the Tab key will select the next field in the record in a continuous fashion (pressing the tab key when positioned on the last field will take the user back to the first field in the record), and pressing the Return or Enter key will end the current edit.  With STRICT set OFF, pressing the Tab or Return key will select the next field, until positioned on the last field in a record, at which point the Tab or Enter key will take the user to the next record in the file.
  2357. SET TALK ON|OFF
  2358. If TALK is ON, current status information for file processing commands (such as SORT, PACK, etc.,) is displayed on the screen.  When TALK is OFF, these progress reports are not displayed.
  2359. The reporting interval which is 100, by default, can be modified by the SET ODOMETER command.  Execution speed can be substantially degraded when SET TALK is ON because of the potentially large amount of screen output.
  2360. SET TOPIC TO  [<expL>|<expC>]
  2361. SET TOPIC TO <expL> or <expC> sets the criteria by which help topics are selected.  By default the topics list is displayed when HELP is invoked.  If you want the details on a specific topic to be displayed instead, simply SET TOPIC TO the topic criteria.  
  2362. The expression is evaluated and the help database is searched for a record whose first field, the topic field, matches the value of the expression.  Comparison is conducted just as in the LOCATE command.  When a match is found the contents of the details field in the help database is displayed.
  2363. For a detailed discussion on context-sensitive help, please refer to Chapter 6 of the User's Guide.
  2364. SET TYPEAHEAD TO <expN>
  2365. This SET command is used to set type-ahead on or off.
  2366. If TYPEAHEAD is SET TO 0, then no characters can be held in the type-ahead  buffer.  If TYPEAHEAD is SET TO a value between 1 and 32,000 (the maximum allowed value), then up to 128 characters can be held in the type-ahead buffer.  SETting TYPEAHEAD TO 0 deactivates the INKEY( ) function and the ON KEY command.  See INKEY( ) function and ON KEY command for more information.
  2367. SET UNIQUE OFF|ON
  2368. This SET command determines whether records with duplicate keys will be maintained in a newly created index file.
  2369. If UNIQUE is set ON, then any records encountered with duplicate keys will not be included in the index file.  Only the first record encountered with a particular key will be included in the index file.
  2370. The file retains its UNIQUE status when you REINDEX.
  2371. See the INDEX ON command for additional information.
  2372. SET VIEW ON|OFF
  2373. SET VIEW ON opens the View window.  Set VIEW OFF closes the View window.  Refer to Chapter 4  in the User's Guide for an explanation of the View window.
  2374. SET VIEW TO <view file>
  2375. SET VIEW TO <viewfile> restores the FoxBASE+/Mac environment to the sate it was in when the <viewfile> was created.  View files are created by executing CREATE VIEW <viewfile>.
  2376. Set Volume <expC1> To <expC2>
  2377. The SET VOLUME TO command allows volume remapping, which should also facilitate the conversion of FoxBASE+, as well as dBASE III PLUS, applications from the MS-DOS environment to the Macintosh.  With volume remapping in effect, filenames that contain MS-DOS disk drive names can be redirected to any directory on the Macintosh.  Volume remapping is set with the SET VOLUME TO command, or alternately through Config.fx.  For instance:
  2378.     SET VOLUME C TO HD20:Pay
  2379. causes the filename C:Data:payinfo to become HD20:Pay:Data:payinfo.
  2380. Volume remappings, <expC1>, can be specified for any single letter (A-Z).  Uppercase and lowercase letters are equivalent. <expC2> is any valid path setting.
  2381. Volume remappings can be changed at any time with the SET VOLUME TO command, or they can be specified at startup through Config.fx.
  2382. If a path name contains blanks, it must be enclosed in quotes.
  2383. Volume remappings are performed quite apart from DOS filename conversion and are entirely optional.  Even native Mac applications might use volume remappings as a useful shorthand notation when working with multiple directories.
  2384. SKIP 
  2385.    Move the database record pointer
  2386. Format:    SKIP [<expN>]
  2387. The SKIP command moves the record pointer from its current location.  A SKIP without <expN> advances the record pointer to the next record.  If an index is in use, the sequence of the records is the same as the key sequence in the controlling index file of the database.
  2388. If <expN> is a positive number, the record pointer moves forward in the file <expN> records.  If <expN> is a negative number, the record pointer moves backward in the file <expN> records.
  2389. If the record pointer is positioned on the last record of the file and a SKIP is executed, RECNO( ) evaluates to one record greater than the last record in the file and EOF( ) is 
  2390. .  If the record pointer is positioned on the first record in the file and a SKIP -1 is executed, RECNO( ) evaluates to 1 and BOF( ) is 
  2391. See also:         SET DELETED, SET FILTER, RECNO( )
  2392. SORT 
  2393.    Sort database
  2394. Format:    SORT TO <file> 
  2395.         ON <field> [/A][/C][/D] 
  2396.         [,<field> [/A][/C][/D]...] 
  2397.         [<scope>] 
  2398.         [FOR <expL>] 
  2399.         [WHILE <expL>]
  2400.         [FIELDS <fieldlist>]
  2401. The SORT command sorts the database currently in USE on the <field>s specified.  The SORTed database is then output to <file>.
  2402. The SORT is performed in ASCENDING (/A) sequence unless DESCENDING (/D) is specified.  The /C option causes SORT to ignore upper and lower case.  The /C option may be used in conjunction with /D or /A.  Only one slash is included when two options are combined (ex.  /AC).
  2403. SORT will permit an optional FIELDS list.  This enables the destination file to contain a subset of the fields in the original database.  The fields in the fields list may be from both the SELECTed database and from other open but unselected databases.  Fields from unselected databases must be referenced with alias prefixes.
  2404. See also: INDEX
  2405. SOUNDEX
  2406. Format:    SOUNDEX(<expC>)
  2407. The SOUNDEX function returns a phonetic representation of the character expression it is passed.  By comparing the SOUNDEX( ) result of two character strings, you can determine if two words are phonetically similar, in other words, if they sound alike.
  2408. See Also:        SEEK, RECNO( ), INDEX
  2409. SPACE
  2410. Format:    SPACE (<expN>)
  2411. The SPACE function returns a character string comprised of <expN> blanks.  The maximum number of spaces which may be specified by <expN> is 254.
  2412. See also:  REPLICATE()
  2413. Format:    SQRT(<expN>)
  2414. The SQRT function returns the square root of the numeric expression (<expN>).
  2415. WARNING:  The SQRT function accepts only non-negative arguments.
  2416. The number of decimal places returned is the larger of the default decimal setting and the number of decimal places contained in <expN>.
  2417. See also:  SET DECIMAL, SET FIXED
  2418. STORE 
  2419.    Store data into memory variable
  2420. Formats:    STORE <expr> 
  2421.         TO <mem_var_list>|<arrayname> or
  2422.         <mem_var>|<arrayname> = <expr>
  2423. The STORE command sets the value of each memory variable in <mem_var_list> to the value of <expr>.  If the memory variable currently exists, STORE replaces its old value with the new value of <expr>.  If no memory variable currently exists with the given name, one is created and initialized to <expr>.
  2424. The STORE command may also be used to initialize every element of a memory variable array to the stated value.  The array must be DIMENSIONed in order to issue the STORE command to an array.
  2425. Format:    STR(<expN>[, <len>] [,decimals])
  2426. The STR function allows you to convert a numeric expression to a character expression.
  2427. This function may have one, two, or three arguments.
  2428. <expN> is evaluated.  The value is then converted to a string which may be specified to be <len> characters wide.  If the third argument is present, then the value is expressed with [decimals] digits to the right of the decimal point.  The <len> of the value is assumed to include both the decimal point and the digits to the right of the decimal point.
  2429. See also:  VAL()
  2430. STUFF
  2431. Format:    STUFF(<expC1>,<start>,<num_char>,<expC2>)
  2432. The STUFF function allows you to easily modify a portion of a character string.
  2433. <expC1> is the current character string.  <start> is the starting position within <expC1> where the replacement is to begin.  <num_char> is the number of characters you wish to remove from <expC1>. <expC2> is the replacement string.
  2434. If <num_char> is equal to 0, the replacement string will be inserted but no characters will be removed from the current character string.
  2435. If <expC2> is the null string, the number of characters specified by <num_char> will be removed from the current string without adding any additional characters.
  2436. See also:  RIGHT(), SUBSTR(), LEFT()
  2437. SUBSTR
  2438. Format:    SUBSTR(<expC>,<start>[,<num_char>])
  2439. The SUBSTR function returns a specified number of characters from the <expC>.
  2440. This function may have two or three arguments.  It extracts characters from <expC> starting at position <start> and continuing for <num_char> characters.  The first character of <expC> is in position 1.  If <num_char> is omitted, then characters are extracted until the end of the expression is reached.
  2441. See also:  AT(), LEFT(), RIGHT(), STUFF()
  2442.    Calculate sum of numeric fields
  2443. Format:    SUM [<scope>] 
  2444.         [expr_list] 
  2445.         [TO <mem_var_list>] 
  2446.         [FOR <expL>]
  2447.         [WHILE <expL>]
  2448. The SUM command adds the numeric field values within the active database.  ALL records in the database being USEd are totaled unless a <scope> or FOR/WHILE <expr> is issued.  One or more fields may be specified in [expr_list].  SUMs can be STOREd in memory variables if the TO <mem_var_list> phrase is included.  If any memory variable has not previously been defined, FoxBASE+/Mac will define it.
  2449. If an [expr_list] is not specified, all numeric fields are SUMmed.
  2450. See also:         AVERAGE, TOTAL
  2451. SUSPEND 
  2452.    Suspend execution of a program
  2453. Format:    SUSPEND
  2454. This command allows program execution to be SUSPENDed in order to execute intervening commands or check current memory variable values.  This command is very useful for debugging FoxBASE+/Mac applications.
  2455. SUSPEND may be issued from a program, the window menu or if the trace window is open, by pressing the suspend button.
  2456. Any memory variables that are created while program execution is SUSPENDed are created as PRIVATE memory variables.
  2457. The RESUME command continues program execution at the line of code where SUSPEND left off.
  2458. See also:        RESUME, RETRY, CANCEL, SET ECHO, SET STEP
  2459. Format:    SYS(<expN>)
  2460. SYS is a character string valued function.  Depending on <expN>, it returns various useful system values.
  2461. SYS(0)
  2462. This returns 
  2463. Mac SE,
  2464. Mac II,
  2465. Mac Plus,
  2466.  etc., depending on the model of Macintosh FoxBASE+/Mac is running on.
  2467. SYS(1)
  2468. This returns the current system date as a Julian day number expressed in a character string.  This function is intended primarily for the convenience of original FoxBASE (dBASE II compatible) users inconverting their databases to FoxBASE+/Mac format.  The daynumber used by this function is identical in format to the numeric day number used in original FoxBASE.
  2469. SYS(2)
  2470. This returns the number of seconds elapsed since midnight as a character string.
  2471. SYS(3)
  2472. This function returns a unique, legal filename which can be used to create temporary files.  A different filename is returned each time SYS(3) is called.
  2473. SYS(5)
  2474. This returns the current default device.  This is set by 
  2475. SET DEFAULT TO <device>
  2476. SYS(6)
  2477. This returns the current PRINT device.  This set by 
  2478. SET PRINT TO <device/file>
  2479. SYS(7[,w])
  2480. This returns the name of the current FORMAT file.  If no workarea number is specified, the currently SELECTed workarea is assumed.  This value is set by 
  2481. .  If no FORMAT file is active, the function returns the null character string.
  2482. SYS(9)
  2483. This function returns your FoxBASE+/MacSerial number.
  2484. SYS(10,d)
  2485. This function converts the (numeric) daynumber 
  2486.  to a character string.  This function is intended primarily for the convenience of original FoxBASE (dBASE II compatible) users whenconverting their databases to FoxBASE+/Mac format.  The daynumber used by this function is identical in format to the numeric day number used in original FoxBASE.
  2487. SYS(11,s)
  2488. This function converts a date or character string in date format to a Julian daynumber (returned as a character string).  This function is intended primarily for the convenience of original FoxBASE (dBASE II compatible) users when converting their databases to FoxBASE+/Mac format.  The daynumber used by this function is identical in format to the numeric day number used in original FoxBASE.
  2489. SYS(12)
  2490. This function returns remaining available memory in bytes.  This function can be very useful when configuring your FoxBASE+/Mac system.
  2491. SYS(14,n[,w])
  2492. This function returns the index expression for a specific index file where 
  2493.  is the index file number and 
  2494.  is the workarea number.  If no workarea is specified, the currently SELECTed workarea is assumed.  If there is no index file associated with a specific index number then the null string is returned.  If an argument greater than 7 is given for n or an argument greater than 10 is given for w, an error message will be returned.
  2495. SYS(15,t,s)
  2496. This function is primarily intended for the convenience of European users who must use letters with diacritical marks.  These are represented as special characters with the high-bit set to 1.  Moreover, since there are different versions of most vowels (with different diacritical marks), indexing on fields containing such characters does not preserve normal alphabetical order.
  2497. The function operates by taking each character of the string 
  2498.  in turn, using the character's numeric value as a subscript into 
  2499. table
  2500. , and replacing the character in 
  2501.  with the character found at that at that position in 
  2502. table
  2503. table
  2504.  is too short to have a character corresponding to a character from 
  2505. , then such characters from 
  2506.  are not translated.
  2507. We have included a sample translation table in a save file called european.mem.  stored in a character variable also called european.  This table will translate a character with a diacritical mark, to the corresponding character minus the diacritical mark.
  2508. As an example, the following command could be used to index a database on a field containing characters with diacritical marks while preserving normal alphabetical order:
  2509.     INDEX ON SYS(15,european,field) TO file
  2510. SYS(16[,<expN>])<N> 
  2511. This function returns the name of the program currently being executed.  This function is useful whenrecovering from errors.
  2512. The optional second numeric argument indicates from how many lexical levels back the program name is to be fetched.
  2513. This parameter can range in value from 1 to N, where N is the depth to which the DO's have been nested to get to the current program.  A parameter value of 1 (or of 0) returns the name of the master program (the program first DOne).  If the parameter is omitted, the name of the currently executing program is returned.  If the parameter exceeds the nesting depth, the null string is returned.
  2514. SYS(17)
  2515. This function returns the processor in use (68000, 68020, or 68030).
  2516. SYS(18)
  2517. This function returns the name of the field (in upper case) being entered when the current ON KEY= routine was triggered.  This can only occur during a READ operation.  Otherwise this function returns the null string. 
  2518. SYS(100)
  2519. This function returns the CONSOLE setting (ON/OFF) last established with SET.
  2520. This function, as well as SYS(101), SYS(102), and SYS(103), is intended for use in recovery routines.  Since occurrence of an error can modify SET options (for instance, an error always SETs CONSOLE ON), it is important to know the settings in force prior to the error.
  2521. SYS(101)
  2522. This function returns the prior DEVICE setting (SCREEN/PRINT).  This function, as well as SYS(100), SYS(102), and SYS(103), is intended for use when recovering from errors.
  2523. SYS(102)
  2524. This function returns the prior PRINT setting (ON/OFF).  This function, as well as SYS(100), SYS(101) and SYS(103), is intended for use when recovering from errors.
  2525. SYS(103)
  2526. This function returns the prior TALK setting (ON/OFF).  This function, as well as SYS(100), SYS(101), and SYS(102), is intended for use when recovering from errors.
  2527. SYS(1020)
  2528. Returns the fully qualified name of the the last folder selected through a directory dialog.
  2529. SYS(1021)
  2530. Returns the total number of vertical pixels in the user's monitor screen.
  2531. SYS(1022)
  2532. Returns the total number of horizontal pixels in the user's monitor screen.
  2533. SYS(1023)
  2534. Returns the total number of vertical pixels in the current port.  The port may be a screen or a printer page.
  2535. SYS(1024)
  2536. Returns the total number of horizontal pixels in the current port.  The port may be a screen or a printer page.
  2537. SYS(1025)
  2538. Returns the ascent of the current font in pixels.  The ascent is the measurement from the baseline to the top of the tallest character in the current font.
  2539. SYS(1026)
  2540. Returns the descent of the current font in pixels.  The descent is the measurement from the baseline to the bottom of the character that extends the furthest below the baseline in the current font.
  2541. SYS(1027)
  2542. Returns the leading of the current font in pixels.  The leading is the amount of spacing between the descent of one line and the ascent of the next line.  For many fonts the leading is 0.
  2543. If you are not addressing the screen in pixels, FoxBASE+/Mac determines the vertical (row) spacing by applying the formula:  ascent+descent+1/2(leading).  If you would like to specify your own spacing between lines, you can use the SYS functions that return these three values and then address the screen or printer in pixels.
  2544. SYS(1028)
  2545. Returns the width in pixels of the letter 
  2546.  for the current font.            
  2547. If you are not addressing the screen in pixels, FoxBASE+/Mac determines the horizontal spacing to the width of the letter n for the current font.  If you would like to specify your own spacing between characters, you can use this SYS function and then address the screen or printer in pixels.
  2548. SYS(1029)
  2549. Returns the width in pixels of the widest character for the current font.
  2550. SYS(1030,<expC>)
  2551. Returns the width in pixels of the specified character expression for the current font.
  2552.  SYS(1031)
  2553. Causes the pointer to disappear until the mouse is moved.
  2554.  SYS(1032)
  2555. Causes the spinning ball pointer to be shown.
  2556.  SYS(1033,<filename>)
  2557. Given a <filename> relative to the default path, this function returns the full path and <filename>.
  2558.  SYS(1034)
  2559. Returns the number (1-9) of the currently active output SCREEN.
  2560.  SYS(1035)
  2561. Returns a number identifying the frontmost screen or window.  (e.g., a value of -8 will be returned if a BROWSE window is frontmost).  See documentation for table.
  2562. SYS(1036,<expN>)
  2563. Given a SCREEN number <expN>, this function returns a "1" if the SCREEN is on the desktop, a "0" if it is not.
  2564.  SYS(1037)
  2565. This function brings the Page Setup dialog forward for user input and returns a value of "1" if the OK button was clicked, "0" if Cancel was clicked, and "-1" (error) if a print job is already printing.
  2566. @WARNING = NOTE: This function should not be called after the SET PRINT ON, SET DEVICE TO PRINT sequence, unless SET DEVICE TO SCREEN and SET PRINT OFF have subsequently been issued.
  2567.  SYS(1038)
  2568. This function brings the Print dialog forward for user input and returns a value of "1" if the OK button was clicked, "0" if Cancel was clicked, and "-1" (error) if a print job is already printing.
  2569. @WARNING = NOTE: This function should not be called after the SET PRINT ON, SET DEVICE TO PRINT sequence, unless SET DEVICE TO SCREEN and SET PRINT OFF have subsequently been issued.
  2570.  SYS(1039)
  2571. This function returns the vertical resolution (in pixels per inch) of the currently chosen printer. 
  2572.  Example: "72"
  2573. SYS(1040)
  2574. This function returns the horizontal resolution (in pixels per inch) of the currently chosen printer.  Example: "72"
  2575.  SYS(1041)
  2576. This function returns the name of the current Help file.
  2577.  SYS(1042)
  2578. This function returns the name of the current Help topic.
  2579.  SYS(1043)
  2580. This function brings the Page Size dialog forward for user input and returns a value of "1" if the OK button was clicked, "0" if Cancel was clicked, and "-1" (error) if the correct printer (ImageWriter) is not currently chosen.
  2581. TEXT...ENDTEXT 
  2582.    Output lines of text
  2583. Format:    TEXT
  2584.         <text lines>
  2585.         ENDTEXT
  2586. These structured programming commands cause lines of text to be output to the screen or printer.
  2587. The TEXT command signals FoxBASE+/Mac to begin copying all lines of text, exactly as they appear, to the current output device(s).  This process continues either until an ENDTEXT statement is encountered or until the end of the current command file is reached, whichever occurs first.
  2588. Format:    TIME([<expr>])
  2589. The TIME function returns the current system time as the value of TIME( ).  The time is returned as an eight-character string in the 24-hour time format.
  2590. If TIME is called with an argument (any argument), it returns the time including hundredths of a second.
  2591. See also:  SYS(2)
  2592. TOTAL 
  2593.    Compute totals of numeric fields
  2594. Format:    TOTAL TO <file> ON <key> 
  2595.         [<scope>] 
  2596.         [FIELDS <list>]
  2597.         [FOR <expL>] 
  2598.         [WHILE <expL>]
  2599. The TOTAL command computes numeric fields totals for records with matching <key> expression values in the database in USE and places them into the corresponding fields of records in a second database.
  2600. One record is created within the TO <file> for each <key> encountered.  The numeric fields from the active database are TOTALed and placed in the record.  The value of the field from the first record encountered with <key> will be placed in the record for all other data types.
  2601. The database in USE must either be SORTed on the <key>, or have an INDEX enabled on the <key>.  If the <file> does not already exist, FoxBASE+/Mac will create it.
  2602. ALL records will be TOTALed unless a <scope> or FOR/WHILE <expr> clause is issued.
  2603. By default, all numeric fields are TOTALed unless the FIELDS clause is specified.
  2604. The default extension is .DBF for the TO <file>.
  2605. TRANSFORM
  2606. Format:    TRANSFORM(<expr>,<expC>)
  2607. The TRANSFORM function allows you to format character and numeric variables without the use of the @...SAY command.
  2608. <expr> is the variable you wish to format.  <expC> is the format expression to be used with the variable.
  2609. See also:  @...SAY
  2610. r additional information on the picture formats.
  2611. See also:  @...SAY
  2612. Format:    TRIM(<expC>)
  2613. The TRIM command trims trailing blanks from <expC>.
  2614. <expC> is evaluated.  Its value is then returned as that same string, but with all trailing blank characters removed.  If <expC> is composed entirely of blanks, TRIM returns the null string.
  2615. See also:  LTRIM(), RTRIM()
  2616. TYPE 
  2617.    Display an ASCII file
  2618. Format:    TYPE <filename> [TO PRINT]
  2619. The TYPE command displays standard ASCII files.
  2620. An extension must be specified for <filename>.
  2621. The TO PRINT option may be specified to send output to your printer device.
  2622. Format:    TYPE(<expC>)
  2623. <expC> is evaluated.  Its value is then returned as a single character describing the data type of that expression.  The possible values which may be returned include:
  2624.         C - character string expression
  2625.         N - numeric expression
  2626.         L - logical expression
  2627.         M - memo expression
  2628.         U - undefined type of expression
  2629. UPDATE 
  2630.    Update database with data from another
  2631. Format:    UPDATE ON <key> 
  2632.         FROM <alias> 
  2633.         REPLACE <field> WITH <expr> 
  2634.         [,<field> WITH <expr>...] 
  2635.         [RANDOM]
  2636. The UPDATE command updates data in the active database file FROM the <alias> file.  The FROM <alias> file must be in USE within one of the unselected work areas.  The UPDATEs are controlled by the value in the <key> field.  The <key> field name must be the same in both databases.
  2637. If the RANDOM clause is not supplied, the active database must be indexed on the <key> field or have been sorted on the <key> field.  The records in the FROM <alias> file must be indexed or sorted on the <key> field.
  2638. If the RANDOM clause is supplied, the active database must be indexed  or sorted on the <key> field, and the FROM <alias> file may be in any order.
  2639. UPDATED
  2640. Format:    UPDATED( )
  2641. The UPDATED function returns 
  2642.  if the last READ changed any data in the associated GET's.
  2643. UPPER
  2644. Format:    UPPER(<expC>)
  2645. The UPPER function converts all lowercase letters to uppercase letters in a specified character string expression.
  2646. See also:  ISUPPER(), ISLOWER(), LOWER()
  2647.    Establish the active database
  2648. Format:    USE [<file>] 
  2649.         [INDEX <file_list>] 
  2650.         [ALIAS <alias>]
  2651.         [EXCLUSIVE]
  2652. The USE command makes <file> active in the current workarea.  <file> must be predefined.  If USE is issued without the <file> expression, then the <file> currently being USEd is closed.  The current database is also closed when another <file> is USEd.
  2653. Use of the INDEX option activates up to seven indices.  Only one index (by default - the first index in the list) controls the order for file access (FIND, SKIP, etc.), but all active indexes will be updated automatically if their key fields are altered.  An index must have been previously created using the INDEX command.
  2654. The optional ALIAS clause may be used to specify an alias name for <file>.
  2655. Refer to the sections that describe the use of "Alias" in the User's Guide for further information.
  2656. See also:        INDEX, SELECT,  SET INDEX
  2657. INDEX
  2658. Format:    VAL(<expC>)
  2659. The VAL function converts <expC> to a numeric value.  The string <expC> must contain the ASCII representation of a valid number.
  2660. See also:  SET DECIMALS, SET FIXED, STR()
  2661. VERSION
  2662. Format:    VERSION( )
  2663. The VERSION function returns a character string which contains the version number of the copy of FoxBASE+/Mac currently being executed.
  2664. This function could be used to conditionally execute portions of code which are version specific in your applications.
  2665. See also:  DISKSPACE(), OS()
  2666. WAIT 
  2667.    Wait for keyboard input
  2668. Format:    WAIT [prompt] [TO <mem_var>]
  2669. The WAIT command suspends FoxBASE+/Mac operation until a key is pressed on the keyboard.  A Carriage Return is not required although it may be the key that is pressed.  The key value may be saved if the TO <mem_var> clause is supplied; otherwise, it will be discarded.
  2670. If the optional [prompt] is not specified, the default message, "Waiting..." is displayed in a small window at the upper right hand corner of the screen, otherwise the [prompt] will be displayed in the window.
  2671. The WAIT TO <mem_var> option STOREs, in <mem_var>, the character sent from the keyboard.  If <mem_var> has not already been defined at the time of its use, WAIT TO will define it.  If a nonprintable character is sent, the <mem_var> is assigned a NULL character.
  2672. See also: ON
  2673. Format:    YEAR(<expD>)
  2674. The YEAR function returns the numeric year corresponding to <expD>.
  2675. The date expression may be the system date function, a memory variable, or a database field.
  2676. . ? YEAR(DATE())
  2677.     1986
  2678. . STORE CTOD("05/23/86") to Num
  2679. 05/23/86
  2680.  pan user's window to the right */
  2681. #define SC_PANLEFT        11        /* ^Z -- pan user's window to the left  */
  2682. #define SC_MENU         12        /* ^Home -- exit - display a menu        */
  2683. #define SC_HELP         13        /@
  2684.    Remove all records from database
  2685. Format:    ZAP
  2686. The ZAP command removes all records from the currently active database.  ZAP is equivalent to issuing a DELETE ALL command followed by a PACK,records> except it is much faster.
  2687. Records ZAPped from the currently active database may not be RECALLed.
  2688. See also:        DELETE, PACK, SET SAFETY
  2689. indow to the left  */
  2690. #define SC_MENU         12        /* ^Home -- exit - display a menu        */
  2691. #define SC_HELP         13        /@
  2692. Menu Items
  2693. This section is a reference for the pull-down menus and menu commands.  
  2694. or more information on the pull-down menus and menu commands refer to Chapter 4  in the User's Guide.
  2695. Align to Grid        Adjust objects to the current alignment grid.  
  2696. Choosing this option will move, and may resize, selected objects to the current alignment grid.  You can use this option to align existing objects that may have been created with another grid setting or with the alignment grid turned off.  The following objects align accordingly:
  2697.  The perimeters of boxes and pictures align to the nearest grid lines.
  2698.  Text, radio buttons and check boxes align on the text's baseline and the object's left margin.
  2699.  The top-left corner of grouped objects aligns to the grid.
  2700.      
  2701. 1Zelman Development Company         
  2702. Zelman Development Company         
  2703. Zelman Development Company         
  2704. Zelman Development Company         
  2705. Zelman Development Company         
  2706. Zelman Development Company         
  2707. iZelman Development Company         
  2708. Zephyr Data Systems                
  2709. Zephyr Data Systems                
  2710. Zephyr Data Systems                
  2711. Zephyr Data Systems                
  2712. Append     Add records
  2713. Append allows you to add records to the active database.  When you select Append the current output screen comes forward and  the record input fields are displayed.  If a valid format file (.fmt) has been opened in the current work area, the  input screen assumes the appearance specified in that file, else the screen assumes a default layout that's similar to the one shown here - with field names displayed to the left and the field positions outlined.
  2714. A default screen has three buttons and two arrows located in the upper right-hand corner.
  2715. Delete/Recall:
  2716.     Marks and unmarks records for deletion.  The button says delete when the current record is not marked for deletion and recall when the current record is marked.
  2717. Abort:
  2718.     Quits Append and abandons the current record.  Note: Only the current record is discarded.  All previously Appended records remain in the database.
  2719. Exit: 
  2720.     Exits from Append and saves the current record.
  2721. Up Arrow:
  2722.     Moves back through the added records (or even through the existing database records).  Clicking Up at the first record in the database will cause you to exit from Append.
  2723. Down Arrow: 
  2724.     Saves the current record and displays another blank Append screen.  Clicking Down will move you forward through the existing records.  Clicking Down in a blank screen will cause you to exit from Append.
  2725. Append Blank - append a blank to the end of the database
  2726. This command appends a blank directly after the last record in the database.  New information can then be entered.
  2727.             513 SET SCREEN                           975 SET STATUS                           514 SET STEP                             515 SET STRICT                           518 SET TALK                             520 SET TOPIC                            521 SET TYPEAHEAD                        523 SET UNIQUE                          Append From
  2728.      Add records from another database
  2729. Append From lets you add records to the active database from another database.  When you select this command an Append From dialog comes forward.
  2730. You can type the name of the source file directly into the text box or call forward a directory dialog box by clicking From
  2731. The From data file does not have to be a .dbf file, and you can specify other file types using the Type popup.
  2732. Database  - standard FoxBASE+/Mac database file.
  2733. Delimited with Tabs - A text file in which each field is separated by tabs.
  2734. Delimited with Commas - A text file in which each field is separated by commas.
  2735. Delimited with Spaces - A text file in which each field is separated by one space.
  2736. SDF - A text file in which the records have a fixed length and end with a carriage return and line feed.
  2737. The check boxes on the right allow you to establish a For or While and specify a Fields list.
  2738. opy To
  2739. Copy the contents of a database 
  2740. Selecting Copy To brings forward the Copy To dialog.
  2741. Average
  2742.         Compute the average of numeric expressions
  2743. Average lets you compute the average of a specified numeric expression.  Selecting this command brings forward the Average dialog.
  2744. With the Average dialog you specify an averaging operation for selected numeric fields in the current database.  All numeric fields in the database are averaged unless otherwise specified by clicking Expr
  2745.  and entering the necessary expression in the expression builder.
  2746. All database records are averaged unless a Scope, For, and/or While is given.
  2747. The results of the Average expression may be stored to an existing or new memory variable.  If no variable is specified, the results of the operation will go to the current output screen.
  2748. Background     Background color
  2749. The Background command allows users with color monitors to set the background color for their screen.
  2750. Bottom -    move to the bottom of the database.
  2751. Positions the cursor below the last record in the database.
  2752. Bring to Front
  2753. Bring the selected object(s) in front of all other objects in the form.  Objects that are brought to the front with this option will overlap any objects that are behind them.  When you bring a grouped object to the front, the individual objects within the group retain their stacking order in relation to each other.
  2754. nc                       
  2755. Zephyrus Inc                       
  2756. Zitporah Films Inc.                
  2757. Zitporah Films Inc.                
  2758. Zitporah Films Inc.         Browse
  2759.         Examine and/or edit the active database
  2760. Selecting the Browse command opens a browse window on the currently selected database.
  2761. When a Browse window is open, the name of the database is listed in the title bar. 
  2762. The field names are listed just below the title bar, and the data contained in the fields is displayed in the columns beneath the field names.
  2763. Browse windows have several special pointers that let you display your data just the way you want.
  2764. The window-splitter lets you split the Browse window into two panes, or close the window back into one pane.  To split the window, move the pointer to the top of the delete/recall column.  Drag the splitter to the right to make the left-hand pane larger; drag it to the left to make the left-hand pane smaller (or to close it altogether).
  2765. The field-resizer lets you resize (for display purposes only) the selected fields in the Browse window.  By placing the field-resizer on the right edge of a field title and dragging, you can enlarge or decrease the display size of the selected field.  This resizing does not change the actual width of the fields in the database, but only the displayed width.
  2766. The pusher lets you 
  2767. shuffle
  2768.  the order in which your database fields will be displayed on the screen.  To reposition a field, place the pusher on the field's title and push it where you want it.  The fields will be displayed in their new order.  This shuffling does not change the actual order of the fields in the database, only the order that they're displayed.
  2769. If you close a Browse window after rearranging fields, the window will be the same when you reopen it.  Field locations and sizes that are established using any of these tools, remain in effect until they are altered or until the database being browsed is closed.
  2770. Cancel     Abort execution of a program file
  2771. Cancel aborts execution of a FoxBASE+/Mac program file.  You are returned to the interactive menu system.  Use this command if you want to prematurely end the execution of a program file.
  2772. Change
  2773.         Edit database records
  2774. Change allows you to edit the data in the active database.  When you select Change, a record selection dialog comes forward.
  2775. This dialog lets you select which records, and fields within those records, you'll be able to change.  Specify a Scope, For, or While and/or set Fields, then click Change.
  2776. The current output screen will come forward and the record fields are displayed.  If a valid format file (.fmt) has been opened in the current work area, the input screen assumes the appearance specified in that file, else the screen assumes a default layout that's similar to the one shown in Append - with field names displayed to the left and the field positions outlined.
  2777. The buttons displayed in the upper right-hand corner of the screen act in the same manner in Change as they do in Append, with the exception of the Down arrow.  Clicking the Down arrow when you're at the end of the selection scope or at the bottom of the database will not bring forward an empty record screen, but causes you to exit from Change.
  2778. Clear     Remove (delete) selected text
  2779. Clear removes selected text or data without placing it onto the Clipboard.  This command is the same as pressing the Delete or Backspace key when text is selected.
  2780. In addition, Clear will also erase the active FoxBASE+/Mac output screen.  This use of the command does not require that text or data be selected, and the entire screen is cleared.
  2781. Close     Close the active window
  2782. Selecting Close closes the active window, the same as clicking the close box.
  2783. Close Screens        Close all screens
  2784. Close Screens closes all of the nine available FoxBASE+/Mac screens.  The screens are returned to there initial state when this option is selected.  To invoke the Close Screens menu item hold the command key down while dragging the Windwo menu.  Close Screens has no effect on any of the FoxBASE+/Mac windows, including Command, View, Browse, etc.
  2785. Command 
  2786. Bring forward the Command window
  2787. The Command window is one major way of entering FoxBASE+/Mac command language statemeClose Windows        Close all screens and windows
  2788. Close Windows closes all of the nine available FoxBASE+/Mac screens  as well as any of the FoxBASE+/Mac windows, including Command, View, Browse, etc..  The screens are returned to there initial state when this option is selected.  To invoke the Close windows menu item hold the option and command keys down while dragging the Window menu. 
  2789. Command 
  2790. Bring forward the Command window
  2791. The Command window is one major way of entering FoxBASE+/Mac command language stCommand     Bring forward the Command window
  2792. The Command window is one major way of entering FoxBASE+/Mac command language statements.  Through this window, you can fully control FoxBASE+/Mac in interactive mode.
  2793. In the Command window, you can scroll backward or forward to display the command history list.  You can edit any command.  And, you can re-execute any command simply by positioning the pointer on the line and pressing return.
  2794. When you issue a command using the pull-down menus, you're actually generating a command in the Command window.  FoxBASE+/Mac stores these commands in a history list, from which they can be recalled, edited, and re-executed.
  2795. If you're unfamiliar with the FoxBASE+ command language, one way to learn it is to review the commands listed in the Command window.  They can be recalled simply by scrolling.  In fact, you can test program ideas and procedures here, then cut and paste them into a program file using the built-in text editor.
  2796. To edit a command, scroll through the Command window.  Then use the text editor to add, delete, or change any information in the command.  To re-execute a command, place the insertion point on the command line and press Return.
  2797. You can also use the Command window as a quick and easy shortcut around the pull-down menus.
  2798. View 
  2799. Bring forward the View window
  2800. The View window is one of the most useful panels you will encounter in FoxBASE+/Mac.  It provides you with an easy way to open database files, to establish relations, or to set or change many FoxBACompile
  2801.     Compile the specified program file or template file
  2802. Compile allows you to compile any FoxBASE+/Mac program file or template file that you specify.  Selecting this command brings forward a directory dialog box.
  2803. Continue         Continue to locate records
  2804. Continue is used to continue a Locate.  Selecting this command causes FoxBASE+/Mac to continue the previously specified Locate.  This continuation begins from the current position in the database.
  2805. Copy     Copy selected text to the Clipboard
  2806. Copy makes a copy of the selected text (instead of cutting it) and places the copy onto the Clipboard.
  2807. Use it when you want to place some text on the Clipboard without disturbing the source.
  2808. Copy File
  2809.     Copy a file
  2810. The Copy File menu selection lets you copy a file.  Use it when you need to make a copy of any file.
  2811. Selecting this command brings forward a directory dialog from which you select the source file you want to copy.  You will then be presented with another directory dialog box in which you enter the name of the new file you will be copying to.
  2812. Copy To
  2813.         Copy the contents of a database 
  2814. Selecting Copy To brings forward the Copy To dialog.
  2815. The Copy To dialog allows you to specify a copy operation that will copy data records from the open data file to a new file.  You can type the name of the new file into the text box or call forward a directory dialog box by clicking Save as
  2816. You then add any additional conditions by selecting the new file's Type, specifying a Scope, For and/or While, and setting Fields.
  2817. ields list when referenced with the ACount
  2818.     Count database records
  2819. Count returns a count of the records in the active database which fall within a specified scope.  Selecting this command brings forward the Count dialog.
  2820. In the Count dialog you specify a Scope, For, and/or While - the records within the Scope, For and/or While are then counted  The default Scope is all.  If a For or While is not specified, all records in Scope are counted..  Records marked for deletion are counted if DELETE is set off.  If TALK is set on, the message:
  2821.     nnnnnn records
  2822. will display in the current output screen.
  2823. Optionally, the result can be placed in an existing or new memory variable that you specify.
  2824. you specify.
  2825. Label
  2826. Generate Labels
  2827. Label allows you to display or print labels from the selected database using a pre-defined label file.  Label files are created through the create label dialog and saved to disk with the default extension of .lbl.  Selecting this command brings forward the Label dialog:
  2828. Type the name of the label file that FoxBASE+/Mac shCut         Remove selected text to the Clipboard
  2829. Cut removes the selected text from the field or file currently being edited.  The removed text is placed on the Clipboard.
  2830. Use Cut when you want to remove a piece of text and place it in a different location.
  2831. Data Grouping
  2832. This allows data to be grouped such that a field can be specified to print only when its value changes. E.g. if the active list includes several people from the same firm, by sorting on the field "firm" and creating a group "firm" the information placed in the grouping band will only appear when the firm name changes, not every record.
  2833. To set a program break point, click in the column that separates the left and right windows, beside the item you want to monitor.  A bullet appears in the column indicating that the break point is set.  Any number of debugging break points can be set in this manner.  To remove a break point, click on the corresponding bullet. 
  2834. When the value of the variable or expression at a break point changes, the executing program is suspended.  The message Do Suspended will appear in the upper right portion of the screen. 
  2835. Delete File
  2836.     Delete a file
  2837. The Delete File menu selection lets you delete a file.  This command works the same as selecting and dragging a file to the Trash.  Use it when you need to make room on your disk or when you no longer need a file.
  2838. Selecting this command brings forward a directory dialog.  Select the file you want to delete.  FoxBASE+/Mac will ask you to confirm the deletion before deleting the file, as long as SAFETY is SET ON.
  2839. Delete
  2840.         Mark database records for deletion
  2841. Delete lets you mark records for deletion.  This command does not physically delete the records.  Rather, it marks the specified records for deletion.  To physically remove these marked records, you must Pack the database.
  2842. When you select this command, a record selection dialog comes forward in which you specify Scope, For, and/or While expressions.
  2843.         Start a program file
  2844. Do gets a specified FoxBASE+/Mac program file and starts executing it.  When you select this command a directory dialog comes forward.  Choose the program file you want to run and click Do.
  2845. Duplicate
  2846. Create one or more duplicates of selected objects.  When this option is selected, a duplicate dialog comes forward in which you specify the number of duplicates that you want to make and the offset that should be applied to each of the duplicates.  These offset values allow you to specify how the copies will appear on the form when they're created.
  2847. This option works with single, multiple and grouped objects.  When the duplicate(s) are placed on the screen, they are placed frontmost (in front of all other objects) and are automatically selected so that you can immediately manipulate them as you choose.
  2848. g comes forward in which you specify the number of duplicates that you want to make and the offset that should be applied to each of the duplicates.  These offset values allow you to specify how the copies will appear on the form when they're created.
  2849. This option works with single, multiple and grouped objects.  When the duplicate(s) are placed on the screen, they are placed frontmost (in front of
  2850. Echo     Display program source code when executing
  2851. Echo is a toggle switch command which allows you to monitor program file source code while a program is executing.  Setting this switch on, then executing a program, brings the Trace window forward.  The program is displayed in Trace as it is executed.  Setting this switch off disables Trace and will set Step off if it is on.  (See Trace).
  2852. Fill    Six fill patterns that can be used with rectangles and round-rectangles.  
  2853. Choosing a fill pattern causes the selected object to be filled with that pattern.  If the special pattern None is chosen the selected object becomes hollow, allowing other objects to show through, and can be used as a frame.  This option can not be used to fill customized shapes built from individual lines.
  2854. rom individual lines.
  2855. Fill Color (color machines only)
  2856. Change the fill color that will be used with the selected object.
  2857. Quick Draw.  Choosing this option allows you to change the fill color that will be used with the selected object.
  2858. Find Again     Repeat the last Find
  2859. Find Again repeats your last Find search, continuing forward from the current position.
  2860.     Text search
  2861. Selecting Find brings forward the find/replace dialog.
  2862. The find/replace dialog lets you specify a word or phrase of text you want to Look for, and also lets you specify Replace with text.  Use it just to look for a specific word or phrase in a memo field or text file or to do a search/replace.
  2863. When specifying your search criteria, you can tell FoxBASE+/Mac to ignore upper and lower case, to match whole words only (and not just characters), and/or to consider all word wrapped text, too.
  2864. When FoxBASE+/Mac finds a match, it highlights the matching text and displays it for your review.
  2865. Flush     Flush data from memory to disk
  2866. Flush moves all the data from active memory buffers into the appropriate disk files without closing the open files.  Use this command to ensure that all data in memory has been written to disk.
  2867. The Font command lets you specify which font will be applied to a specific window or screen.  Select this command when you want to change the text font that's dislayed in the currently selected screen.  This command can be used to set the font in the Command window, all nine output screens, program editing windows, Browse windows, memo editing windows, Debug, Trace, etc.
  2868. Foreground     Foreground color
  2869. The Foreground command allows users with color monitors to set the foreground color for their screen.
  2870. Generate 
  2871.     Generate a program using the specifed template and form
  2872. Generate allows you to generate an application using the specified template and form file.  You may also want to generate a format file using the built-in format file generator.  Selecting the generate command brings forward a dialog.
  2873. To generate an application, click the From Template radio button.  If a template has not previously been chosen (the name of the last template used will be listed in the Template text box), you will need to click on Template and select a template file.  Click OK.  Also, if the screen form is still open, its name is listed in the Form text box automatically; otherwise, you will need to click on Form and select a form file.  Click OK.  Depending on the template chosen, you may be asked to name a program file.  A screen will be opened in which you can observe the code being generated. 
  2874. Once generated you can do the program by selecting Do from the program menu and selecting the newly created program file.  
  2875. To generate a format file, click the Format File radio button.  The Template button is dimmed.  This happens because the template for generating format files is built-in.  Also, if the screen form is still open, its name is listed in the Form text box automatically; otherwise, you will need to click on Form and select a form file.  Click OK.  You will be asked to name the format file (format files are given an .fmt extension by default). 
  2876. Once generated you can use the format file by bringing forward the Setup dialog from the Database menu or the View window, checking Format (in the setup dialog) and selecting the newly created format file.  With this format set, when you change or append records the specified format will be used instead of the default screen.
  2877. a particular point in the code.
  2878. To set a break point:
  2879. @BULLET LIST 2 = If the program is currently executing, suspend execution 
  2880. by clicking on the <F2B>suspend<F255D> button in the <F2B>Trace<F255D> 
  2881. window or by selecting <F2B>Suspend<F255D> Goto
  2882.     Position the record pointer
  2883. Goto allows you to position the record pointer to a specific record in the database.  When you select this command, a Goto dialog comes forward.
  2884. This dialog allows you to specify where you will Goto.  Select Top, Bottom, specify a specific Record number, or enter a number of records to Skip.
  2885. Grid        Turn the invisible alignment grid off and on.  
  2886. By default, the alignment grid is set on and the placement and sizing of objects will be controlled by the grid's spacing.  When this option is on, a check mark is next to it in the menu.  Selecting this option when the check mark is present will cause the effects of the alignment grid to be turned off and the check mark will be removed.  In reverse fashion, if you select this option when the alignment grid is turned off and there is no check mark, the grid will be turned on and the check mark will appear.
  2887. The spacing of the alignment grid is set in the dialog that comes forward when you select the Rulers option.  Changing the grid spacing has no effect on any existing items unless you select them and use the Align to Grid option.  Also, changing the ruler increments will change the spacing of the alignment grid.
  2888. Grid Lines
  2889. Add or remove the grid lines in the Browse window.
  2890. Group & Ungroup
  2891. These two options allow you take a collection of individual objects and create a single object, or to take a grouped object and divide it back into its individual pieces.
  2892. The Group option will create a single object from a collection of selected objects or other groups.  This is a convenience option that allows you to manipulate a complex collection of objects as a single object.  The objects that make up the group retain their stacking order in relation to each other and the group as a whole takes the stacking order of the frontmost object in the group.  You can not select text with the text tool after you've grouped it with other objects.  Before you can edit it, you'll have to ungroup.
  2893. The Ungroup option will divide a grouped object back into the individual objects or smaller groups that it is composed of.  When a grouped object has other smaller groups in it, ungrouping the larger object will not ungroup the smaller groups.  When a grouped object is ungrouped, the objects of the group remain selected and keep their stacking order.
  2894. Selecting Help brings forward the FoxBASE+/Mac on-line Help feature.  The main Help window contains an extensive list of commands and keywords, listed alphabetically.
  2895. The Help window is a standard FoxBASE+/Mac window that can be scrolled, moved, sized, and closed.  You can scroll through the list to find the topic you want, or you can type a letter and the pointer moves to the first word beginning with that letter.  To see the Help information for any item, select the one you're interested in and click Help or double-click on the item.
  2896. The Help window then displays the details available for the chosen topic.
  2897. If more Help is available than will display on the screen, use the scroll bar to see the rest.
  2898. If you want to return to the main Help screen to select another topic, click Topics.  If you want to see the Next topic, click Next.  To see the Previous topic, click Previous.
  2899. Hide Screens    
  2900. Hide Screens closes all of the nine available FoxBASE+/Mac screens.  Use this command to quickly clear off your desktop.  Hide Screens has no effect on any of the FoxBASE+/Mac windows, including Command, View, Browse, etc.
  2901. , Browse, etc.
  2902. Hide Windows        Hide all windows and screens
  2903. Hide windows closes all of the nine available FoxBASE+/Mac windows as well any of the FoxBASE+/Mac windows, including Command, View, Browse, etc.  Use this command to quickly clear off your desktop.  To invoke the Hide Windows menu item hold the the option key down will dragging the Window menu.
  2904. Label
  2905.         Generate Labels
  2906. Label allows you to display or print labels from the selected database using a pre-defined label file.  Label files are created through the create label dialog and saved to disk with the default extension of .lbl.  Selecting this command brings forward the Label dialog:
  2907. Type the name of the label file that FoxBASE+/Mac should use into the text box, or click Form
  2908.  and select the appropriate file from the directory dialog that comes forward.
  2909. Output from this command can be sent to the printer or to the current output screen.  All records in the active database file will be used unless a Scope, For and/or While is specified.
  2910. imply respond with a 
  2911.  to retest your label alignment.
  2912. If the TO FILE option is used with the LABEL command, the labels will be written to a text file. 
  2913. See also:        MODIFY LABEL, CREATE LABEL
  2914. Locate
  2915.     Look for a database record
  2916. Selecting Locate brings forward a record selection dialog, in which you specify a Scope, For, and/or While on which to Locate.
  2917. Once you've specified a Locate expression, FoxBASE+/Mac begins looking from the top of the active database for a matching record.  If a matching record is found, the record pointer is positioned at that record.
  2918. If a match is not found, you are placed at the end of the file or at the end of the specified Scope.  
  2919.     Create a new file
  2920. New lets you create and open a new file.  When you select New, the new file dialog box appears on the screen.
  2921. If no database is open in the currently selected work area, you can create only a new database file, program file, or generic text file.  If, on the other hand, you're in a work area where a database is in use, then you can create one of these file types: Database, Program, File, Index, Report, Label, or Form.  Select the type of file you want to create by moving the pointer to the appropriate line and clicking. Then click OK.
  2922. You can cancel the creation of any file by clicking Cancel.
  2923. Next - move to the next record
  2924. This command positions the cursor at the next record in the database.
  2925.     Open an existing file
  2926. The Open menu selection lets you open existing files.  When this command is selected, a directory dialog box comes forward.
  2927. If the currently selected work area does not have a database open in it, you are given the option of opening a database file, program file, view file, or generic text file.  If, on the other hand, you're in a work area where a database is in use, then you can open any of the available file types.
  2928. The directory dialog box will, by default, display all the files of a particular type.  If you want to display all files in a folder or directory, regardless of their file type, click All Files.
  2929. Since many FoxBASE+/Mac operations are file-type specific, the file-picker directory dialogs (as shown earlier) will often display only files of a particular type.  Clicking the All Files check box, however, allows you to examine and choose from all files in the selected directory.  In this way, if a file you wish to work with does not have the proper file type, it can still be opened and manipulated - provided it contains valid data appropriate to that type of file.
  2930. If a file selected by means of All Files is opened and contains valid data appropriate to the category of file being opened, its Finder file type is changed to the proper type.  As a result, the file will appear on the desktop with the proper icon.  It will also appear in the proper category in subsequent FoxBASE+/Mac file-picker dialog boxes.  This All Files conversion is typically needed when files are first imported from other products or other operating environments (like MS-DOS).
  2931. To open a file, select it and click Open or double-click on the file name.
  2932. Page Layout     - Formats the report
  2933. The following can be set using this command:
  2934.     - Number of Columns in the report (label)
  2935.     - Print Order (side to side or top to bottom)
  2936.     - Margins
  2937. Also, a number of pre-formatted options are available under the "Layout" sub-command.    
  2938. e gone forever.
  2939. If the database in USE is being used with one or more indexes enabled, PACK will rebuild the index files.
  2940. Regardless of the setting of SET ESCAPE, pressing ESC will not interrupt a PACK command. 
  2941. See also:        DELETE, RECALL, Page Setup
  2942.     Specify printer settings
  2943. Selecting Page Setup brings forward the Page Setup dialog.  The dialog that you actually see may be different from the one shown here.
  2944. This dialog allows you to set certain page parameters like paper size, orientation, and certain special effects.  If you're not sure how to setup your page, see the documentation that came with your computer and printer.
  2945. Paste     Recall text from Clipboard
  2946. Paste places a copy of the Clipboard contents into the active text at the insertion point.
  2947. Present the patterns and line widths that can be used with graphic objects (lines and boxes).  The six pen patterns are identical to fill patterns.
  2948. o fill patterns.
  2949. Pen Color (color machines only)        
  2950. Change the pen color that will be used with the selected object.
  2951. uick Draw.  Choosing this option allows you to change the pen color that will be used with the selected object.
  2952. Preferences 
  2953.         Establish edit settings
  2954. The Preferences command allows you to change certain settings that are in effect during editing sessions.  You can either make the preferences apply to a single file or to all subsequent program and text files.  Selecting this menu option brings forward the Preferences dialog.
  2955. The Tab size option allows you to set the distance (in number of spaces) that the insertion point will advance when the tab key is pressed.  The default is four.
  2956. The Wrap words option allows you to determine if the text displayed in the current editing window will automatically wrap to the next line when it reaches the right margin, or if the line will continue, unseen, beyond the right margin.  Text which extends beyond the right margin can be accessed by scrolling the window.
  2957. The Auto indent option allows you to easily construct indented program structures.  Pressing the Return or Enter key when auto indent is on causes the insertion point to go down to the next line and to automatically indent that line by the same amount as the previous line.
  2958. The Make backup option allows you to keep the previous version of an edited file or program as a backup.
  2959. The Add Line Feeds option allows you to save files with carriage return / line feed terminators for line ends.  This allows files that are created on the Macintosh to also be used under DOS.
  2960. The Use for all new option allows you to designate that the settings should be used as the defaults with all new program and text file editing windows.
  2961.  consiPrevious - move  cursor to the preceeding record
  2962. This command moves the cursor to the record directly preceeding the one it's on.
  2963. Print
  2964.     Print the active file
  2965. Selecting Print brings forward the Print dialog.  Use this menu selection to print files.
  2966. The Print dialog that you actually see may be different from the one shown here.  However, you'll be able to set many of the same parameters such as the number of copies to print, pages to print, etc.
  2967. Quick Report
  2968. Create a default report .  This quick report can take one of two layouts: vertical or horizontal.  The quick report will display and order the fields from the current database on the report.
  2969. Once a quick report format has been specified, the report window returns with all the fields from the specified database displayed in a collection of identical field boxes.  All the fields created in a Quick report are fields with no format, no valid clause, and no range checking.  If you wish to use any of these options with selected fields, you will need to specify them yourself.
  2970.  range checking.  If you wish to use any of these options with selected fields, you will need to specify them yourself.
  2971. Quit         Leave FoxBASE+/Mac and return to Finder
  2972. The Quit command causes you to leave FoxBASE+/Mac.  Before Quitting, FoxBASE+/Mac tidies up its work areas and closes all open files.
  2973. Recall
  2974.         Unmark records that are marked for deletion 
  2975. Recall lets you unmark records that are marked for deletion.  FoxBASE+/Mac does not physically delete records until the database is Packed, and only deletes those records that are marked.
  2976. Selecting this option brings forward a record selection dialog box in which you can specify Scope, For, and/or While.
  2977. Reindex     Rebuild active index files
  2978. Reindex causes any open index files associated with the active database to be rebuilt.  Use this command to reconstruct any index files which do not accurately reflect the current status of the database.
  2979. olete index>
  2980. and then issue REINDEX.  This constructs an up-to-date index.
  2981. Any index which was initially created with UNIQUE set on, will also be rebuilt with UNIQUE status set on.
  2982. See also:        INDEX, SET INDEX, SET UNIQUE, USE
  2983. Rename File
  2984.         Rename a file
  2985. The Rename File menu selection lets you rename a file.  This command works much the same as selecting and renaming a file when you're in the Finder.  Use it to give a file a different name.
  2986. Selecting this command brings forward a directory dialog, from which you choose the file you want to rename.  You will then be presented with another directory dialog box in which you enter the new name for the file.
  2987. Reorder Fields
  2988. Change the order in which FoxBASE+/Mac will access selected fields.  With this option you select a group of fields, then have them reordered in relation to the remaining fields in the form.  Choosing this option when no fields are selected has no effect on the current screen.  To use this option, select a field(s) and choose the Reorder Fields option.  All non-selected fields are reordered, followed by the selected fields.
  2989. Replace All    Replace all occurrences
  2990. Replace All replaces all occurrences of a matching string of Look for text with the Replace with text that was specified in the Find/Replace dialog.  This menu option is only available once a Find has occurred.  Use this command to replace all occurrences of specified text in a file.
  2991. Replace and find again     Replace text and continue search
  2992. Replace and find again replaces a matching string of Look for text with the Replace with text that you specified in the find/replace dialog, then continues searching for the next occurence of matching text.
  2993. Use this command to replace text that FoxBASE+/Mac has found with the Find command.
  2994. Replace
  2995.         Update fields in database records
  2996. Replace lets you change information in one record or in a range of records.  When you select this command, a Replace dialog comes forward.
  2997. In the Replace dialog you select a Replace field, build a With Expr
  2998. , specify a Scope, For, and/or While.  If more than one database is open you can even select between work areas by clicking on the Database popup.
  2999. Report
  3000.         Generate a Report
  3001. With Report, you can produce reports using pre-defined report files.  Report files are created through the create report dialog and saved to disk - the default file extension for report form files is .frm.  Selecting Report brings forward the Report dialog:
  3002. Type the name of the report file that FoxBASE+/Mac should look for into the text box, or click Form
  3003.  and select the appropriate file from the directory dialog that comes forward.
  3004. Report output can be sent to the designated printer or to the current output screen.  A detail report line for each record in the active database will be produced unless a Scope, For, or While is specified.
  3005. Clicking Plain will suppress the printing of page numbers and date at the top of each report page.  Page headings will appear only on the first page of the report.
  3006. Clicking Heading brings forward an expression builder, in which you  can specify an additional heading line to be placed on each page of the report.
  3007. Clicking Summary suppresses detail line printing - only totals and subtotals are printed.
  3008. Clicking Prompt will cause the print dialog to come forward before printing begins.  This allows you to set additional options such as number of copies, pages to print, even Cancel the print.
  3009.  report to an ASCII text <file>.  The TO PRINT and TO FILE options are mutually exclusive and both options should not be specified in the same REPORT command.
  3010. The PROMPT option will invoke the standard print option dialog.
  3011. The SUMMARY option suppresses detail lResume     Restart a suspended program
  3012. Resume causes a suspended program to resume running.  Use it to restart a program file that was suspended.  The program will be restarted at the line where execution was suspended.
  3013. Revert    Return the current file to the last saved state
  3014. Revert returns your currently displayed text file or memo field to its last-saved condition.  Before discarding your changes, FoxBASE+/Mac asks for confirmation.  If you click No, you are returned to the document.  If you click Yes, your changes are discarded and a fresh copy of the document is displayed for you to edit.
  3015. Rulers    
  3016. Brings forward a dialog that allows you to specify certain settings that effect the rulers. 
  3017.                  
  3018. YEGEN ASSOCIATES                   
  3019. Yakima Products                    
  3020. Yakima Products                    
  3021. Yakima Products                    
  3022. Yakima Products                    
  3023. Yakima Products                    
  3024. Yakima Products                    
  3025. Yakima Products                    
  3026. Yanke Bionics Inc.                 
  3027. Yanke Bionics Inc.          Save        Save the active file
  3028. Selecting Save saves the active text or program file (if any changes have been made) without closing the document.
  3029. Save As
  3030.         Save the active file under a different name
  3031. Save As allows you to save a copy of the currently active file under a different name.  Selecting this command brings forward a directory dialog box.  Type in the name for the new file and click OK to save it or click Cancel to resume editing.
  3032. This command will also allow you to save the current environment settings to a View file.  If Save As is selected when the View window is active, a directory dialog comes forward in which you enter the name of the new .vue file.  This .vue file contains all the environment settings, names of files in use, alias names, relations that have been established, etc.
  3033. Screen 1 - Screen 9    Bring forward the selected screen
  3034. The Screen commands bring forward and make active one of the nine available output screens.  These screens are used exactly like a page in a report.  All output generated by a program is displayed in the currently selected output screen.  
  3035. Any one of the available output screens can be brought to the top by selecting it from this menu, by clicking on it or using the Command+screen number key shortcut.  
  3036. Screen
  3037. Bring forward a dialog that allows you to specify a wide range of settings for the underlying output screen.  
  3038.  output screen.  For a complete explanation of the screen options and the associated dialog, see the Screen Options section at the end of this chapter.
  3039.     Search an indexed database
  3040. Seek lets you quickly search a database through its index.  When you select this command, an expression builder comes forward, in which you specify the seek expression.  This allows you to search for matches on general expressions.
  3041. Single quotes (` '), double quotes (
  3042. ) or brackets ([ ]) must be used to enclose a character string expression.
  3043. When you complete the Seek expression and click OK, FoxBASE+/Mac evaluates the expression and looks for a matching value in the current index file.  Since Seek looks through the index file instead of the database, this form of search is faster than a Locate, however, it requires that the database be indexed and that the index file be open.
  3044. Select All        Select all lines of text
  3045. The Select All command selects all lines of text in the current window.
  3046. Send to Back
  3047. Send the selected object(s) behind all other objects in the form.  Objects that are in front of the moved object will overlap.  When you send a grouped object to the back, the individual objects within the group retain their stacking order in relation to each other.
  3048. Setup
  3049.         Setup your currently selected work area
  3050. Setup allows you to setup the currently selected areas;Setup>work area.  Selecting this command brings forward the Setup dialog box.
  3051. With the Setup dialog, you can establish which index file(s) you want to use with a database, Modify a database structure or index, select a list of fields for display and browse purposes, define a filter, even specify which output form to use.  For a complete explanation of the many functions available, see the Overview in  Chapter 4  of the manual.
  3052. Size         Font size
  3053. The Size command controls the size at which the text will be displayed.
  3054.     Sort a database
  3055. Sort allows you to create a new sorted database from an existing database.  When you select this command, the Sort dialog comes forward.
  3056. In the upper portion of this dialog is a field-picker.  This integrated field-picker, in conjunction with the order/case box in the lower-left corner, allows you to select which fields you will sort on and whether the fields will be sorted in Ascending or Descending order.
  3057. The Field Name box lists the fields in your database.  To the right of each field name is a one-character code designating the type of field (Character, Numeric, Date, Logical, Memo, and Picture).  All memo and picture fields, by the way, are dimmed because you cannot sort on either type of field.
  3058. Select your Sort Order fields in decreasing order of importance - the most significant field should be first.  If the sort should Ignore Case, check that box as well.
  3059. You can also specify Scope, For, and/or While expressions and set the Fields that will appear in the new data file.  You then name the file in the Output text box or click Save as to bring a directory dialog box forward.
  3060. Status    Bring forward the Status window
  3061. Status brings forward the Status bar window.  The Status bar window may be moved anywhere.  The information displayed in the Status window is also available in the View window.
  3062. Step     Pause program execution after each line of code
  3063. Step is a toggle switch command which pauses program execution after each statement.  If Step is on, Echo is on by default and Trace appears on the desktop (setting Echo off will set Step off automatically).  After each step, you can resume, cancel, or perform other tasks.  (See Trace).
  3064. Style     Font style
  3065. The Style command lets you specify additional typographic characteristics for the selected text, such as Boldface, Italic, etc.
  3066.     Calculate the sum of numeric fields
  3067. Sum allows you to sum the numeric field variables in the active database.  Selecting this command brings forward the Sum dialog.
  3068. All numeric fields in the database will be Summed if an Expr
  3069.  is not specified.  Also, all records are summed unless a Scope, For and/or While is given.  The result of this operation can be saved in an existing or new memory variable.
  3070. e TO <mem_var_list> phrase is included.  If any memory variable has not previously been defined, FoxBASE+Suspend     Pause execution of a program file
  3071. Suspend causes the program file that is currently running to pause.  While in this suspended state, you may execute additional commands, view or change memory variables, as well as perform other interactive operations.  Resume will continue execution of the program file at the line where the program was Suspended.
  3072. Title /Summary        
  3073. Allows for inclusion of Title and/or Summary bands in a report. For example, if a form letter is to go beyond one page, you may only want the header information on the first page. Put the header information in the Title band to achieve this.
  3074. Top - move to the top of the database
  3075. This command moves the cursor to the first record in the database.
  3076. Total
  3077.     Compute totals of numeric fields 
  3078. Total computes numeric field totals for records in the active database.  These totals are placed into corresponding fields of a second database.  When you select this command, the Total dialog comes forward.
  3079. You can type the name of the destination file into the text box or call forward a directory dialog box by clicking Save As.
  3080. Checking On brings forward an expression builder, in which you specify a key on which to Total.  You can add additional conditions by specifying a Scope, For, and/or While or setting Fields.
  3081. All records will be Totaled unless a Scope, For, or While expression is given, and all numeric fields are Totaled unless Fields are specified.
  3082. The database being Totaled must either be Sorted on the On key, or have an index enabled.
  3083. ll be TOTALed unless a <scope> or FOR/WHILE <expr> clause is issued.
  3084. By default, all numeric fields are TOTALed unless the FIELDS clause is specified.
  3085. The default extension is .DBF for the TO <file>.
  3086. Trace    Bring forward the Trace window
  3087. Trace brings forward the Trace window, from which the program currently being executed can be viewed as it runs.  The program line being executed is highlighted and shown in context with the surrounding statements.  Alternately,  the Trace window can be created and displayed by setting Echo on in the Program menu or in the on/off panel of the View window, or by entering SET ECHO ON into the Command window.
  3088. Undo     Undo your last text editing command
  3089. The Undo menu selection undoes the last action that was performed on any text within a field, record, or file.
  3090. Use Undo when you've changed your mind about the most recent text editing command and you would like to reverse it.
  3091. View     Bring forward the View window
  3092. You bring the View window forward and make it active by selecting View from the Window menu, or by executing SET or SET VIEW ON.
  3093. On the left side of the View window are five panels (view, on/off, keys, misc, and color).  The information the View window contains and how you work with it depends on which panel is currently active.
  3094. This section describes some of the features of AutoAddress
  3095. A ,ogk
  3096. `b)R 
  3097.  .ogZ
  3098.      _\j 
  3099. x7[@R`Y[
  3100. "h^1hq
  3101. gJG@R`X
  3102. g*). 
  3103. 1gVR 
  3104. d1hq}
  3105. y     [\
  3106. &YT~tP
  3107. 2z[V,P
  3108. gv6 "
  3109. qxV' 
  3110. VDone
  3111. This command will end your AutoAddress session
  3112. Skips to the next name in the active list
  3113. Prior
  3114. Skips to the prior name in the active list
  3115. Lookup
  3116. This allows you to lookup any name in the list. You can type in the first few letters of the field which is currently being sorted. I.e. if the list is being sorted on last name, typeing in "RI" will bring you to the name "RICE" (assuming you have someone named Rice in the list), if the field is sorted on State, typing in "RI" will bring you to the first Rhode Island listing.
  3117. Leaving the "?" will present a scrollsheet of the entire list. Click on the name you desire and then click in the upper left hand corner of the window to get to it. Also, [apple]-[f] combination will allow you to seek out a name in any field, not just the sorted field. 
  3118. N^NuNV
  3119. N^NuNV
  3120. OfT n
  3121. Tf< n
  3122. Ef$ n
  3123. This will add a new, blank record in the active list.
  3124. N^Nu?<
  3125. dpd1@
  3126. *NuNV
  3127. Delete
  3128. This will mark the current record for deletion, and it will no longer be visible. The information must be "PACKED" in order to eliminate the space it occupies. That packing operation could take some time for large lists and is only performed when the list is changed.
  3129. Multi-user note: if the list is being shared at the time you change it, the deleted records will not be "PACKed" because it will raise havoc with the other users. Leaving the list unpacked may result in the number of records displayed being slightly higher than the actual number, because the deleted records, although gone, are still occupying space. This will not hurt the program's performance.
  3130. 5BgBackup
  3131. This allows the active list to be backed up to a diskette or other device. It is a prudent measure to back up frequently. If the diskette does not have enough space, the program will tell you so.
  3132. HN^NuNV
  3133. N^NuNV
  3134.  nRestore
  3135. This function will restore a file generated by the backup command. Hopefully, you won't ever have to use it.
  3136.  _(HBg
  3137. HyDLOG?.
  3138.  _&HBg
  3139. N^NuNV
  3140. | _"n
  3141. N^NuNV
  3142. HyDLOG?.
  3143. HyDITL?.
  3144. BgCopy
  3145. This copies all of the information currently on the screen and puts it in a buffer. [see Paste]
  3146. N^NuNV
  3147. BgBg/.
  3148. SEJ@f
  3149. N^NuNV
  3150. N^NuNV
  3151. Paste
  3152. This adds a new record and pastes the information previously copied using the Copy command. 
  3153. XZXLWTJJIn98918`8-8&8 5619.0)
  3154.  ~ x d 6 1
  3155. Export
  3156. This allows you to export all or some of the records and fields to a variety of formats which then can be used by other programs.
  3157. VlH n
  3158. N^ _O
  3159. BnImport
  3160. This allows you to bring information from other programs into AutoAddress.
  3161. (_N^NuNV
  3162. VlH n
  3163. This allows you to sort the list in alphabetical order on any of the fields in the list.
  3164. Multi-user note: this command will not work when the list is being shared.
  3165.  B:AAFormats.dbf EXCLUSIVE
  3166. ON ERROR INDEX ON UPPER(TRIM(format)) TO B:AAFormats.idx
  3167. SET INDEX TO B:AAFormats.idx
  3168. ON ERROR
  3169. SELECT A
  3170. ON ERROR DO SetBases
  3171. mjunk = mbasea(1)
  3172. ON ERROR DO SetReports
  3173. mjunk = mbasera(1)
  3174. ON ERROR DO SetLetters
  3175. mjunk = mbasela(1)
  3176. ON ERROR DO SetFormats
  3177. mjunk = mbasefa(1)
  3178. ON ERROR DO pdefault
  3179. RESTORE FROM B:mem.mem AHelp
  3180. Press it and find out.
  3181. Change
  3182. This allows you to change the active list. there is no limit as to how many lists you can keep with AutoAddress, or where they can be kept on the network.
  3183. Multi-user note: If someone has a list open and has turned off sharing, you cannot work with that list at the same time.
  3184. HyDLOG?.
  3185. HyDITL?.
  3186. K _"n
  3187. Sharing Popup
  3188. This allows you to switch between sharing the list or keeping it all to yourself.
  3189. NOTE: IT IS STRONGLY RECCOMMENDED THAT SHARING BE TURNED OFF UNLESS THERE IS A SPECIFIC NEED FOR IT. PERFORMANCE OF THE PROGRAM SUFFERS WHEN SHARING IS ACTIVE, ALSO SOME OF THE COMMANDS WILL NOT WORK.
  3190. N^NuNV
  3191. J@g6Jm
  3192. Q/.Tag This Record
  3193. This is a true/false field which allows you to mark a subset of the list. Use this if you only want to send a letter to some of the people on the list, or only want to print a report of some people on the list.
  3194. Tag All Records
  3195. This button will put and "X" in the Tag checkbox on all records in the active list.
  3196. Multi-user note: any record in use by another user will not be changed.
  3197. N^NuNV
  3198. (N^NuNV
  3199. hTag No Records
  3200. This button will remove the "X" in the Tag checkbox on all records in the active list.
  3201. Multi-user note: any record in use by another user will not be changed.
  3202. END BLANK
  3203.         ON ERROR
  3204.         UNLOCK
  3205.         DO PSayCount
  3206.         CASE mtask = 6
  3207.         ALERT NOTE 4 "Are you sure you want to delete " + TRIM(first) + " " + TRIM(last) TO mdelete
  3208.             IF mdelete = 2 .AND. RECCOUNT() > 1
  3209.             ldelete = .T.
  3210.             idelete = idelete + 1
  3211.             DELETE
  3212.             DO PSayCount
  3213.             GO TOP
  3214.             ENDIF
  3215.         CASE mtask = 7
  3216.         DO Backup
  3217.         CASE mtask = Problems
  3218. The easiest fix is to restart the program and don't do the same thing again. As with any program, it is possible to confuse it by issuing a series of commands which the program allows you to execute but in retrospect make no sense. 
  3219. For example, you can bomb the program by first trying to open a list on another machine which is not turned on. The program will tell you that the list is not available. If you then immediately try to open it again, and it is still not available, the program will bomb. That course of action is not a logical one.
  3220. If you are still encountering problems, discard the "mem.mem" file in the "AutoAddress Files" folder. 
  3221. If you still have a problem, write, Fax or call me at:
  3222.     Joe Serdakowski
  3223.     274 Moosehorn Road
  3224.     East Greenwich, RI  02818-1114
  3225.     401-885-3631
  3226.     401-884-5653 FAX
  3227. ONT "Chicago",12 COLOR 0,0,-1,-1,-1,-1
  3228.             @ PIXELS  70, 67 SAY "sort order"         STYLE 65536 FONT "Chicago",12 COLOR 0,0,-1,-1,-1,-1
  3229.             @ PIXELS  86, 67 SAY "of this list:"      STYLE 65536 FONT "CRETURN1
  3230. Format:    Return1( ) or Return1
  3231. The current first line of the return address is returned as the value of Return1.
  3232. The return address is modified by the Modify Return Address button in the format window or report window.
  3233. RETURN2
  3234. Format:    Return2( ) or Return2
  3235. The current second line of the return address is returned as the value of Return2.
  3236. The return address is modified by the Modify Return Address button in the format window or report window.
  3237. N^NuNV
  3238.  _(HBgN
  3239. N^NuNV
  3240. RETURN3
  3241. Format:    Return3( ) or Return3
  3242. The current third line of the return address is returned as the value of Return3.
  3243. The return address is modified by the Modify Return Address button in the format window or report window.
  3244. OfT n
  3245. Tf< n
  3246. Ef$ n
  3247. RETURN4
  3248. Format:    Return4( ) or Return4
  3249. The current fourth line of the return address is returned as the value of Return4.
  3250. The return address is modified by the Modify Return Address button in the format window or report window.
  3251. LINE1
  3252. Format:    Line1( )
  3253. NOTE: This function must have the parenthesis "()" at the end of it.
  3254. Line1 will be the person's name in the format:
  3255. Line1() = TRIM(title) + " " + TRIM(first) + " " + TRIM(last)
  3256. This is a shortcut format for addressing letters, envelopes and labels.
  3257. Line1() must be present on the format or report in order for Line2, Line3, Line4 and Line5 to be calculated.
  3258. N^NuNV
  3259. N^NuNV
  3260. ?<Line2
  3261. Format Line2() or Line2
  3262. Line2, Line3, Line4, Line5
  3263. Format Line2() or Line2, Line3() or Line3, Line4) or Line4, Line5() or Line5
  3264. Line2 will be the person's position and/or department in the format:
  3265. Line2() = TRIM(position) + " " + TRIM(dept)
  3266. If both position and dept are blank, then Line2 will be the firm
  3267. Line2() = TRIM(firm)
  3268. If position, dept and firm are blank, then Line2 will be address1
  3269. Line2() = address1
  3270. This is a shortcut format for addressing letters, envelopes and labels.
  3271. In the same fashion, Line3, Line4 and Line5 are used to build a 3, 4 or 5 line address using the following fields:
  3272.     title + first + last
  3273.     position + dept
  3274.     firm
  3275.     address1
  3276.     address2
  3277.     city + state + zip
  3278.     If all lines are occupied, address1 and address2 are condensed into one line.
  3279.     There is no additional punctuation in the assembly of the address since the U.S. Postal Service has new guidelines which request that punctuation be excluded. Users requiring punctuation can include it in the fields (i.e. a comma after city) or prepare their own equivalent functions:
  3280.         TRIM(city) + ", " + TRIM(state) + " " + TRIM(zip)
  3281. Line1() must be present on the format or report in order for Line2, Line3, Line4 and Line5 to be calculated.
  3282. / / ? ?.
  3283. / / ? ?.
  3284. J/ / ? N
  3285. / / ? BgA
  3286. / / ? BgN
  3287. J@f2Jm
  3288. xg,?.
  3289. / / ? Tag Some Records
  3290. This button will put an "X" in the Tag checkbox on some records in the active list based on the criteria you specify. The following options are available:
  3291.           
  3292.  Tag all records
  3293.           
  3294.  Tag only those records which begin with a specified character string
  3295.           
  3296.  Tag only those records which exactly match a specified character string
  3297.           
  3298.  Tag only those records which fall alphabetically after one specified string and before a second specified string.
  3299. Multi-user note: any record in use by another user will not be changed.
  3300. UnTag Some Records
  3301. This button will remove an "X" in the Tag checkbox on some records in the active list based on the criteria you specify. The following options are available:
  3302.           
  3303.  UnTag all records
  3304.           
  3305.  UnTag only those records which begin with a specified character string
  3306.           
  3307.  UnTag only those records which exactly match a specified character string
  3308.           
  3309.  UnTag only those records which fall alphabetically after one specified string and before a second specified string.
  3310. Multi-user note: any record in use by another user will not be changed.
  3311. N^NuNV
  3312. Problems
  3313. The easiest fix is to restart the program and don't do the same thing again. As with any program, it is possible to confuse it by issuing a series of commands which the program allows you to execute but in retrospect make no sense. 
  3314. For example, you can bomb the program by first trying to open a list on another machine which is not turned on. The program will tell you that the list is not available. If you then immediately try to open it again, and it is still not available, the program will bomb. That course of action is not a logical one.
  3315. One potentially confusing feature is the "Save Environment" checkbox when you are creating a new report or format. What this does if checked is remember which list is active, and whenever that report or format is used, assures that the same list is always used. This is done to assure that a created report will always be used with the correct list. One could become quite befuddled if the list suddenly changes when a particular report or format is used. However, if the "Save Environment" is turned off, then the created report or format can be used with any list. See the manual for further discussion.
  3316. If you are still encountering problems, discard the "mem.mem" file in the "AutoAddress Files" folder. 
  3317. If you still have a problem, write, Fax or call me at:
  3318.     Joe Serdakowski
  3319.     274 Moosehorn Road
  3320.     East Greenwich, RI  02818-1114
  3321.     401-885-3631
  3322.     401-884-5653 FAX
  3323. You have 90 days free support if you mail in your registration card. If you catch me at that number I will probably answer your question even if the time has expired, but PLEASE LOOK IN THE DOCUMENTATION FIRST!!!
  3324.